自定义模块ModuleNotFoundError中的python:没有名为';活动';

自定义模块ModuleNotFoundError中的python:没有名为';活动';,python,centos,Python,Centos,我在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 在pickg

我在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'
回溯(最近一次呼叫最后一次):
文件“/home/azkaban/python_code/pyib/activity/pickgoods.py”,第13行,在
从活动导入数据库连接,随机行
ModuleNotFoundError:没有名为“活动”的模块

但是在Windows10上的PyCharm中,它可以正常工作。

要让代码找到
活动
,您需要在
系统路径中有包含
活动
的文件夹。我想PyCharm会自动将“当前目录”添加到
sys.path
,或者在幕后进行一些其他神奇的操作

你的选择
  • 如果直接运行
    pickgoods.py
    ,则包含它的文件夹将自动添加到
    sys.path
    。因此,这应该是可行的
  • 此解决方案有点次优,因为它取决于文件系统上的入口点脚本位置如果您的项目开始有子文件夹和多个入口点,我真的推荐解决方案2。

  • 您可以使用以下内容创建
    setup.py
    activity/
    的父文件夹
  • 导入设置工具
    setuptools.setup(name='mypackage',packages=setuptools.find_packages())
    
    并在可编辑状态下使用

    python -m pip install -e <folder_with_setup.py>
    
    python-mpip安装-e
    
  • 您可以使用
    sys.path.insert(0,带有活动的文件夹)
    手动将
    activity/
    的父文件夹添加到
    sys.path
    。我认为这更像是一种黑客行为,因此我建议改为#2

  • 我已经将setup.py创建到活动的父文件夹,并运行python3-m pip install-e/home/azkaban/python_codes/pyib,那么如何运行pickgoods.py呢?
    python -m pip install -e <folder_with_setup.py>