关于python相对路径,绝对路径的问题 20
关于python相对路径,绝对路径的问题我的当前目录为D:\lianxi\quanju.pystring.py__init__.pylianxi.py我运行quanju....
关于python相对路径,绝对路径的问题
我的当前目录为D:\lianxi\
quanju.py
string.py
__init__.py
lianxi.py
我运行quanju.py
quanju.py中的代码为:
import lianxi
import string
print string.__file__
print lianxi.__file__
我在C:\Python26\Lib目录中也放了lanxi.py
为什么运行后的string和lianxi的文件地址不同:
C:\Python26\lib\string.pyc
D:\lianxi\lianxi.pyc
我调看了sys.path
['D:\\lianxi', 'C:\\Python26\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages']
不是会先搜索当前目录吗,那为什么只搜索当前目录的lianxi.py而string.py却是标准库中的呢
我用的是python2.6版本,不知道实行了默认据对路径了没,但是我将quanju.py代码改为如下:
from __future__ import absolute_import
from . import lianxi
from . import string
print string.__file__
print lianxi.__file__
总会出现如下提示
Traceback (most recent call last):
File "D:\lianxi\quanju.py", line 2, in <module>
from . import lianxi
ValueError: Attempted relative import in non-package
能给我讲讲from . import ……
的使用方法吗,在此谢过了 展开
我的当前目录为D:\lianxi\
quanju.py
string.py
__init__.py
lianxi.py
我运行quanju.py
quanju.py中的代码为:
import lianxi
import string
print string.__file__
print lianxi.__file__
我在C:\Python26\Lib目录中也放了lanxi.py
为什么运行后的string和lianxi的文件地址不同:
C:\Python26\lib\string.pyc
D:\lianxi\lianxi.pyc
我调看了sys.path
['D:\\lianxi', 'C:\\Python26\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages']
不是会先搜索当前目录吗,那为什么只搜索当前目录的lianxi.py而string.py却是标准库中的呢
我用的是python2.6版本,不知道实行了默认据对路径了没,但是我将quanju.py代码改为如下:
from __future__ import absolute_import
from . import lianxi
from . import string
print string.__file__
print lianxi.__file__
总会出现如下提示
Traceback (most recent call last):
File "D:\lianxi\quanju.py", line 2, in <module>
from . import lianxi
ValueError: Attempted relative import in non-package
能给我讲讲from . import ……
的使用方法吗,在此谢过了 展开
展开全部
没有见过from . import ..这种用法,
如果在当前目录下直接import就可以了
如果在当前目录下的aa目录里面有一个lianxi.py,你可以用 from aa import lianxi
C:\Python26\lib\里面直接放的库文件是python自带的系统库文件,第三方的库或者是你自己的库文件是放在C:\\Python26\\lib\\site-packages下面的。
尽量不要取和python系统库一样的名字,可能会引起冲突。因为有很多系统库之间互相依赖的,有的也会有import string.
其他的情况当前目录下的是会被优先import到的。
如果在当前目录下直接import就可以了
如果在当前目录下的aa目录里面有一个lianxi.py,你可以用 from aa import lianxi
C:\Python26\lib\里面直接放的库文件是python自带的系统库文件,第三方的库或者是你自己的库文件是放在C:\\Python26\\lib\\site-packages下面的。
尽量不要取和python系统库一样的名字,可能会引起冲突。因为有很多系统库之间互相依赖的,有的也会有import string.
其他的情况当前目录下的是会被优先import到的。
展开全部
我这儿python 2.7不存在这个问题
在命令行下用python2.6运行
print "\n".join(__import__("sys").modules)
告诉我输出里面有没有string模块,有的话就说明python的模块导入机制将你的string.py忽略了。
from语法大概是这样:
from MODULE import NAME [ as NEW_NAME] [, ...]
详细定义见这里:
docs.python.org/release/2.6.7/reference/simple_stmts.html#the-import-statement
在命令行下用python2.6运行
print "\n".join(__import__("sys").modules)
告诉我输出里面有没有string模块,有的话就说明python的模块导入机制将你的string.py忽略了。
from语法大概是这样:
from MODULE import NAME [ as NEW_NAME] [, ...]
详细定义见这里:
docs.python.org/release/2.6.7/reference/simple_stmts.html#the-import-statement
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
from . import ……
from (扩展包) import *(*表示该扩展包里的全部函数,也可以单个列出来,如: from sys import exit )
还有就直接 import xxxx
from (扩展包) import *(*表示该扩展包里的全部函数,也可以单个列出来,如: from sys import exit )
还有就直接 import xxxx
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询