来自自定义模块的python模块未发现错误:没有名为'activity'的模块



我在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,或者在幕后做一些其他神奇的事情。

您的选择

  1. 如果直接运行pickgoods.py,则包含它的文件夹会自动添加到sys.path中。因此,这应该有效
import dbconnect, randomrow

这个解决方案有点次优,因为它取决于文件系统上的入口点脚本位置如果您的项目开始有子文件夹和多个入口点,我非常推荐解决方案2。

  1. 您可以创建setup.pyactivity/文件夹,其中包含以下内容
import setuptools
setuptools.setup(name='mypackage', packages=setuptools.find_packages())

并使用以可编辑状态安装软件包

python -m pip install -e <folder_with_setup.py>
  1. 您可以使用sys.path.insert(0, folder_with_activity)手动将activity/文件夹添加到sys.path我认为这更像是一个破解,所以我推荐#2

最新更新