Python: 在不使用完整路径的情况下将一个包导入另一个包
Python: Importing a package in another package without using the full path
我有一些代码无法正确导入 [在 Linux]:
文件(每个 python 文件只包含一个 class 的同名和大写):
commandreader/
|-- CommandReader.py
|-- y/
|-- Switch.py
|-- Option.py
|-- __init__.py
|-- x/
|-- InputArg.py
|-- __init__.py
CommandReader.py 的导入:
from y import Switch
from y import Option
y/Switch.py 和 y/Option.py 的导入:
from x import InputArg
y/__init__.py:
from .import x
from .Switch import Switch
from .Option import Option
y/x/__init__.py:
from .InputArg import InputArg
错误:
$ python3 ./CommandReader.py
Traceback (most recent call last):
File "CommandReader.py", line 12, in <module>
from y import Switch
File "/home/swatts/code/commandreader/y/__init__.py", line 2, in <module>
from .Switch import Switch
File "/home/swatts/code/commandreader/y/Switch.py", line 8, in <module>
from x import InputArg
ModuleNotFoundError: No module named 'x'
编辑:除了我的错误,我是否误解了 Python 希望包如何工作?因为这是我的印象。
一种解决方法是,你可以在环境变量中添加模块的路径:
添加Path
中的路径Environmental Variable
如果您正在使用 Windows
- 右键单击
My Computer
并转到 Properties
- Select
Advanced system settings
- 转到选项卡
Advanced
- 点击
Environment Variables
- 在
System Variables
部分搜索 Path
变量
- 双击它并在其
value
字段的列表中添加路径。
您也可以使用代码:
import sys
sys.path.append(path)
print(sys.path)
我有一些代码无法正确导入 [在 Linux]:
文件(每个 python 文件只包含一个 class 的同名和大写):
commandreader/
|-- CommandReader.py
|-- y/
|-- Switch.py
|-- Option.py
|-- __init__.py
|-- x/
|-- InputArg.py
|-- __init__.py
CommandReader.py 的导入:
from y import Switch
from y import Option
y/Switch.py 和 y/Option.py 的导入:
from x import InputArg
y/__init__.py:
from .import x
from .Switch import Switch
from .Option import Option
y/x/__init__.py:
from .InputArg import InputArg
错误:
$ python3 ./CommandReader.py
Traceback (most recent call last):
File "CommandReader.py", line 12, in <module>
from y import Switch
File "/home/swatts/code/commandreader/y/__init__.py", line 2, in <module>
from .Switch import Switch
File "/home/swatts/code/commandreader/y/Switch.py", line 8, in <module>
from x import InputArg
ModuleNotFoundError: No module named 'x'
编辑:除了我的错误,我是否误解了 Python 希望包如何工作?因为这是我的印象。
一种解决方法是,你可以在环境变量中添加模块的路径:
添加Path
中的路径Environmental Variable
如果您正在使用 Windows
- 右键单击
My Computer
并转到Properties
- Select
Advanced system settings
- 转到选项卡
Advanced
- 点击
Environment Variables
- 在
System Variables
部分搜索Path
变量 - 双击它并在其
value
字段的列表中添加路径。
您也可以使用代码:
import sys
sys.path.append(path)
print(sys.path)