我制作了自己的python模块,我希望能够从任何地方导入。我创建的模块依赖于信息的文本文件来运行。
我运行python -m site --user-site
,并创建了该目录,然后将我的模块副本和文本文件放入site-packages
目录,重新启动IDLE,然后尝试导入我的模块。我遇到了这个错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import MyModule
File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\MyModule.py", line 34, in <module>
with open('TextFile.txt') as p:
IOError: [Errno 2] No such file or directory: 'TextFile.txt'
这就是我的模块:
import blah
...
with open('TextFile.txt') as p:
p.read()
为什么会发生这种错误?该文件位于同一目录中!
答案 0 :(得分:0)
事实证明,当您导入site-package时,它将在当前目录中执行,而不是在site-packages
目录中执行。
修复此错误的方法是指定所需文件的路径 例如,您将更改MyModule的第34行,以匹配此代码:
with open('C:\Users\User\AppData\Roaming\Python\Python27\site-packages\TextFile.txt') as p:
或者,您可以将当前目录更改为site-packages
,或者在当前目录中获取所需文件的副本(在本例中为TextFile.txt
)作为快速修复,而无需修改模块。