我有这个文件结构:
/home/test
??? dirA
? ??? ClassA.py
??? dirB
??? Main.py
Run Code Online (Sandbox Code Playgroud)
文件中有以下内容:
类A.py:
class ClassA:
def __str__(self):
return 'Hi'
Run Code Online (Sandbox Code Playgroud)
主要.py:
from dirA.ClassA import ClassA
class Main:
def main():
a = ClassA()
if __name__ == '__main__':
Main.main()
Run Code Online (Sandbox Code Playgroud)
我将当前目录更改为:
$ cd /home/test/dirB
Run Code Online (Sandbox Code Playgroud)
这有效:
$ PYTHONPATH=/home/test python Main.py
Run Code Online (Sandbox Code Playgroud)
这不会:
$ 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'
Run Code Online (Sandbox Code Playgroud)
在 Main.py 中添加此行无效:
import os, sys
# Get the top level dir.
path = os.path.dirname(os.path.dirname(__file__))
sys.path.append(path)
Run Code Online (Sandbox Code Playgroud)
模块还是找不到!有很多类似的问题,但我无法以编程方式完成这项工作(跳过PYTHONPATHenv var。)我知道目录不是模块,文件是,但这在 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
Run Code Online (Sandbox Code Playgroud)
确保最后一个 import 语句在更改后的路径上运行。
| 归档时间: |
|
| 查看次数: |
4799 次 |
| 最近记录: |