提问者:小点点

来自自定义模块modulenotfounderror的python:没有名为“activity”的模块


我在Centos8上使用Python 3.6.8.
在/home/azkaban/python_codes/activity下,我将dbconnect.py,init.py,pickgoods.py,randomrow.py这些Python文件放在下面。

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/activity/pickgoods.py'时,它失败了。

Traceback (most recent call last):
  File "/home/azkaban/python_codes/activity/pickgoods.py", line 13, in <module>
    from activity import dbconnect, randomrow
ModuleNotFoundError: No module named 'activity'

但在Windows10上的PyCharm中,它运行良好。


共1个答案

匿名用户

要使activity被您的代码找到,您需要在sys.path中有包含activity/的文件夹。 我认为PyCharm会自动将“当前目录”添加到sys.path中,或者在幕后做一些其他神奇的事情。

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

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

import setuptools
setuptools.setup(name='mypackage', packages=setuptools.find_packages())

并将软件包安装为可编辑状态,使用

python -m pip install -e <folder_with_setup.py>