簡體   English   中英

使用 package 的 setup.py 安裝版本時出現 ModuleNotFoundError,但不是本地 -

[英]ModuleNotFoundError when using setup.py install version of package, but not locally-

問題


python setup.py install安裝一個 package 我正在開發一切正常,但是當我嘗試導入 package 時,我得到一個“ModuleNotFoundError”,說找不到本地package。 package 在本地工作(當我進入目錄並嘗試從那里將其導入 python 解釋器時)。

娛樂:


C:.
│   setup.py
│
└───package
    │   __init__.py
    │
    └───networking
            hello.py
            __init__.py

setup.py

from setuptools import setup

setup(
    name="test_package",
    packages=["package"],
    version="0.0.1",
    description="Test",
)

package.networking/__init__.py

from package.networking.hello import Hello

package.networking/hello.py

class Hello:
    def __init__(self, name):
        self.name = name

    def hello(self):
        print("Hello", self.name)

以下代碼在本地測試時有效(意思是,您 cd 到帶有 package 的目錄,然后在那里輸入 python 解釋器並嘗試),但在我使用 setup.py install 安裝 package 之后不起作用:

> python setup.py install
> cd .. # Change directory so we don't import locally, but use the version installed with setup.py
> python
>>> from package.networking import Hello
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'package.networking'
>>> 

相比之下,當我與 package 位於同一目錄時,此方法有效:

> python
>>> from package.networking import Hello
>>> Hello("Test").hello()
Hello Test
setup(
    name="test_package",
    packages=["package"],
    ...
)

你不想念什么嗎?

packages=[
    'package',
    'package.networking'
],
package_dir={
    'package': 'package',
    'package.networking': 'package/networking',
},

這是一個例子:首先列出所有的包,然后將它們與目錄相關聯。


setup.py必須知道要構建哪些模塊、給它們起什么名字以及在哪里找到它們。

暫無
暫無

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

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