0

我制作了自己的 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()

为什么会发生这个错误?该文件在同一目录中!

4

1 回答 1

0

事实证明,当您导入站点包时,它会在当前目录中执行,而不是在site-packages目录中。

修复此错误的方法是指定所需文件的路径。
例如,您将更改 MyModule 的第 34 行,以匹配以下代码:

with open('C:\Users\User\AppData\Roaming\Python\Python27\site-packages\TextFile.txt') as p:

或者,您可以将当前目录更改为site-packages,或者在当前目录中获取所需文件(在本例TextFile.txt中)的副本作为快速修复,而无需修改您的模块。

于 2018-03-14T08:48:50.237 回答