我有这个文件结构:
/home/test
├── dirA
│ └── ClassA.py
└── dirB
└── Main.py
在文件中包含以下内容:
ClassA.py:
class ClassA:
def __str__(self):
return 'Hi'
Main.py:
from dirA.ClassA import ClassA
class Main:
def main():
a = ClassA()
if __name__ == '__main__':
Main.main()
我将当前目录更改为:
$ cd /home/test/dirB
这有效:
$ PYTHONPATH=/home/test python Main.py
这不是:
$ python Main.py
Traceback (most recent call last):
File "Main.py", line 1, in <module>
from dirA.ClassA import ClassA
ModuleNotFoundError: No module named 'dirA'
在Main.py中添加以下行无效:
import os, sys
# Get the top level dir.
path = os.path.dirname(os.path.dirname(__file__))
sys.path.append(path)
仍然找不到该模块!有很多类似的问题,但是我不能以编程方式使它工作(跳过PYTHONPATH
env var。)我知道dirs不是模块,文件是但在PyCharm中可以工作(IDE是否正在修复PYTHONPATH
?)
sys.path
在尝试加载可能依赖于更改路径的任何程序包之前,您需要确保已更改了自己的程序包-否则脚本在遇到和import
声明语句时将失败。换句话说,请确保您的Main.py
开头为:
import os
import sys
path = os.path.join(os.path.dirname(__file__), os.pardir)
sys.path.append(path)
from dirA.ClassA import ClassA
为了确保最后一个import语句在更改后的路径上运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句