簡體   English   中英

Python-與setup.py一起安裝時,程序包無法導入子程序包

[英]Python - package can not import subpackages when installed with setup.py

我開發了一個python包,希望在另一個項目中使用。 程序包的結構類似於以下示例:

- foo
  - setup.py
  - README.md
  - foo
    - __init__.py
    - main.py
    - bar.py
    - sub_pkg1
       - __init__.py
       - example.py
    - sub_pkg2
       - __init__.py
       - example2.py

bar.py文件包含Bar sub_pkg1 ,它依賴於sub_pkg1sub_pkg2的文件,這些文件的導入方式類似於

from sub_pkg1 import example.py

__init__.py文件只是將每個python文件導入其目錄中。 例如sub_pkg1__init__.py

from example import ExampleClass

main.py文件僅導入Bar類並執行其一些方法。

from bar import Bar
bar = Bar()
bar.foo()

setup.py文件如下所示:

from setuptools import setup, find_packages

setup(
    name='Bar',
    version='0.0.7',
    author='me',
    packages=find_packages()
)

當我直接從軟件包中運行main.py文件時,它就像一個main.py 但是,當我使用以下命令使用pip將其安裝到我的其他項目中時:(我現在還不想將軟件包發布到PyPi上,只想將開發版本包含在我的其他項目中)

pip install -e /path/to/package

並嘗試導入它-我收到錯誤消息:

ModuleNotFoundError: No module named 'example'

我是否需要以某種方式導出sub_packages?

我使用Python 3.6

代替from sub_pkg1 import example.py使用from sub_pkg1 import ExampleClass

就像在sub_pkg1和sub_pkg2的__init__.py中一樣,您已經導入了ExampleClass ,現在您可以自由地從sub_pkg1在項目的任何位置直接導入ExampleClass

在此處閱讀有關__init__.py和模塊的更多信息: https : //docs.python.org/3/tutorial/modules.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM