簡體   English   中英

隱藏包中的實現模塊和子模塊

[英]Hide implementation modules and submodules in package

我想打包我的代碼以僅公開主要功能。 我的目錄是這樣的:

./
  setup.py
  my_module/
    __init__.py
    public_functions.py
    internal_modules/
      __init__.py
      A.py
      B.py
      other_modules.py/
        __init__.py
        C.py

public_functions我做進口從一些操作internal_modules.A但不能從internal_modules.B ,都A.pyB.py使用一些功能從C.py

我的setup.py如下:

from setuptools import setup

setup(name='my_module',
      version='0.1',
      description='my_awesome_module',
      author='Me',
      author_email='example@mail.com',
      license='MIT',
      packages=['my_module'],
      zip_safe=False)

我想使用pip進行安裝,但是一旦安裝后,我就不想再從包中看到我的internal_modules了。

我可以正確安裝它,但是當我這樣做時

from my_module import public_module

它會引發ImportError: no module named internal_modules.A public_module.py的第一行中ImportError: no module named internal_modules.A

我知道如果將my_module.internal_modules作為另一個軟件包添加到setup.py聲明中,則可以解決此問題,但這將使我的internal_modules與已安裝軟件包中的A.pyB.py公開。

我在這里找到了類似的問題但對我不起作用

您可以通過強調模塊名稱來隱藏導入中的模塊內部:

_yourmodulename轉到此處。

E:你還可以定義__all__在包的__init__ -只有模塊名稱從__all__將通過進口*進口。

暫無
暫無

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

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