相关文章推荐
深沉的黑框眼镜  ·  python - ...·  2 月前    · 
威武的茴香  ·  执行命令./configure ...·  2 月前    · 
暗恋学妹的红金鱼  ·  jnidispatch ...·  1 周前    · 
可爱的蟠桃  ·  adodb ...·  6 月前    · 
酷酷的蜡烛  ·  Android ...·  1 年前    · 

在编写代码时,有时候会导入系统自带模块,有时候要导入自己定义的模块。这与windows/Linux中的环境变量类似。Python解释器会有一个默认的目录(sys.path),在解释器执行时,会从这个默认的目录里去寻找引用的模块。

查看解释器寻找模块的默认目录

>>> import sys
>>> sys.path
['', 'F:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'F:\\Python27\\DLLs', 'F:\\Python27\\lib', 'F:\\Python27\\lib\\plat-win', 'F:\\Python27\\lib\\lib-tk', 'F:\\Python27', 'C:\\Users\\gcfeng\\AppData\\Roaming\\Python\\Python27\\site-packages', 'F:\\Python27\\lib\\site-packages', 'F:\\Python27\\lib\\site-packages\\win32', 'F:\\Python27\\lib\\site-packages\\win32\\lib', 'F:\\Python27\\lib\\site-packages\\Pythonwin']

可见默认目录存放在一个列表里面。所以,如果自己引用的模块A不再上述目录中, 把模块A的路径追加到sys.path路径中就可以了
(模块的绝对路径:O:\crazylab\PycharmProjects\test_learn\get_param)

>>> sys.path.append('O:\crazylab\PycharmProjects\test_learn')
>>> import get_param
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import get_param
ImportError: No module named get_param

为什么导入后还是找不到呢?看看sys.path里面都有什么:

>>> sys.path
['', 'F:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'F:\\Python27\\DLLs', 'F:\\Python27\\lib', 'F:\\Python27\\lib\\plat-win', 'F:\\Python27\\lib\\lib-tk', 'F:\\Python27', 'C:\\Users\\gcfeng\\AppData\\Roaming\\Python\\Python27\\site-packages', 'F:\\Python27\\lib\\site-packages', 'F:\\Python27\\lib\\site-packages\\win32', 'F:\\Python27\\lib\\site-packages\\win32\\lib', 'F:\\Python27\\lib\\site-packages\\Pythonwin', 'O:\\crazylab\\PycharmProjects\test_learn']

看最后一行:’O:\crazylab\PycharmProjects\test_learn’,可以发现是test_learn前少了一个反斜杠:

'O:\\crazylab\\PycharmProjects\test_learn' --这个是错的
'O:\\crazylab\\PycharmProjects\\test_learn' -- 这个是对的

应该是由于\t恰好是一个字符且没有转义过来,因此在填写windows路径的时候强烈建议要用双斜杠(\\),以避免未预料到的错误。改成双斜杠,可以导入成功(导入后不报错):

>>> sys.path.append('O:\\crazylab\\PycharmProjects\\test_learn')
>>> import get_param
                                    python sys模块包含了与python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性
复制代码 代码如下:import sysprint dir(sys)
result:
复制代码 代码如下:[‘__displayhook__’, ‘__doc__’, ‘__excepthook__’, ‘__name__’, ‘__package__’, ‘__stderr__’, ‘__stdin__’, ‘__stdout__’, ‘_clear_type_cache’, ‘_current_frames’, ‘_getframe’, ‘_mercurial
sys模块包含了与python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性。
下面的两个方法可以将模块路径加到当前模块扫描的路径里:
sys.path.append('你的模块的名称')
sys.path.insert(0,'模块的名称')
os.path.dirname()方法
当"print os...
                                    Pythonsys模块:该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数# sys.argv #命令行参数List,第一个元素是程序本身路径# sys.modules.keys() #返回所有已经导入的模块列表# sys.exc_info() #获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息# sys.exit(n) #程序,正常退出时exit(0)
                                    最近在看《Python源码剖析》,对Python内部运行机制比以前了解的更深入了,感觉自己有机会也可以做个小型的动态脚本语言了,呵呵,当然是吹牛了。目的当然不是创造一个动态语言,目的只有一个:更好的使用Python。看到模块导入那块的时候,终于对模块导入机制比较了解了,以防忘记特记录下来。 模块的搜索路径模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己
最近写了个查看硬件信息的脚本,用到wmi。执行pyinstaller -F xxx.py成功后,生成了exe。但是运行exe失败。错误如下:
错误中提到的包pythoncom我是装好的,怎么都想不明白是为什么。
然后搜到了这篇文章《python3.8+pyinstaller调试正常,打包后运行失败(Module‘puwintypes’isn’t in frozen sys.path)》
以为找到了救星,结果按他的办法,在py代码里加入import pythoncom,还是报错。
最终我搜到了这篇文章
                                    Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。Python中有join()和os.path.join()两个函数,具体作用如下:join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串;os.path.join():将多个路径组合后返回。...
                                    python相对导入python的相对导入就是:from .[module/package] import xxx的形式。即加入了以.或者..等表示当前目录和上一级目录的符号,不直接指定目录(即package,有__init__.py)名,来从对应目录导入module或从对应目录下的module导入模块内名字的方式。具体细节python文件中使用相对导入是和当前文件的name属性有关的。即如下的一...