[英]ModuleNotFoundError when pip installing package, but not when using python setup.py install
[英]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.