我在Centos8上使用Python 3.6.8。
在/home/azkaban/Python_codes/pyib/activity下,我将dbconnect.py、init.py、pickgoods.py、randomrow.py这些Python文件放入。
pyib
----setup.py
----activity
-------__init__.py
-------dbconnect.py
-------pickgoods.py
-------randomrow.py
在pickgoods.py
from activity import dbconnect, randomrow
...
dbconnect.methodname1()
...
randomrow.methodname2()
当我在Centos shell命令中运行"python3/home/azkaban/python_codes/pyib/activity/pickgoods.py"时,它失败了。
Traceback (most recent call last):
File "/home/azkaban/python_codes/pyib/activity/pickgoods.py", line 13, in <module>
from activity import dbconnect, randomrow
ModuleNotFoundError: No module named 'activity'
但在Windows10上的PyCharm中,它运行良好。
要让代码找到activity
,您需要在sys.path
中拥有包含activity/
的文件夹。我想PyCharm添加了";当前目录";自动切换到CCD_ 4,或者在幕后做一些其他神奇的事情。
您的选择
- 如果直接运行
pickgoods.py
,则包含它的文件夹会自动添加到sys.path
中。因此,这应该有效
import dbconnect, randomrow
这个解决方案有点次优,因为它取决于文件系统上的入口点脚本位置如果您的项目开始有子文件夹和多个入口点,我非常推荐解决方案2。
- 您可以创建
setup.py
到activity/
的父文件夹,其中包含以下内容
import setuptools
setuptools.setup(name='mypackage', packages=setuptools.find_packages())
并使用以可编辑状态安装软件包
python -m pip install -e <folder_with_setup.py>
- 您可以使用
sys.path.insert(0, folder_with_activity)
手动将activity/
的父文件夹添加到sys.path
我认为这更像是一个破解,所以我推荐#2