我无法在python项目中执行绝对导入。我提到了Importing modules from parent folder,但是所有的方法都有一些缺点
下面是我的目录结构。我所有的源代码都存在于Bank/src/
文件内容是
模块1A.py
DEMO = '123'
模块2a.py
from module1.module1a import DEMO
print (DEMO)
a.py
from module1 import module1a
print (module1a.DEMO)
我想从银行目录执行我的代码
当我执行a.py时,它工作
(base) ➜ Bank python src/a.py
123
执行module2a.py时失败
(base) ➜ Bank python src/module2/module2a.py
Traceback (most recent call last):
File "src/module2/module2a.py", line 1, in <module>
from module1.module1a import DEMO
ModuleNotFoundError: No module named 'module1'
是的,我的src不在PYTHONPATH中这就是它失败的原因
我尝试了以下方法,所有的工作
方法1:
(base) ➜ Bank PYTHONPATH=src python src/module2/module2a.py
123
这是个好习惯吗
方法2:
用这样的东西
import os
import sys
currentdir = os.path.dirname(os.path.realpath(__file__))
parentdir = os.path.dirname(currentdir)
sys.path.append(parentdir)
问题:我需要将它添加到我执行的所有python文件中(在项目中有多个入口点的情况下)
方法3:
通过使用setuptools创建设置
from setuptools import setup, find_packages
setup(name='myproject', version='1.0', packages=find_packages())
问题:由于我的代码在src目录中,我无法更改包名,我必须像from src.module1.module1a import DEMO
那样导入,我需要像from myproject.module1.module1a import DEMO
这样的东西
目前没有回答
相关问题 更多 >
编程相关推荐