簡體   English   中英

安裝的python包給出了ModuleNotFoundError

[英]Installed python package gives ModuleNotFoundError

我推送了一個包到 pypip 然后安裝成功。 由於我在 anaconda 上,我可以執行conda list並確認我的軟件包已安裝在基本環境中。

接下來我想使用它:

from epicprint import Print

但這會引發 ModuleNotFoundError: No module named 'epicprint'

我假設我的包結構有一些錯誤。 它確實在我的 test.py 文件中工作,這很奇怪。 請參閱以下包 repo 中的文件:

打印文件

import os
import sys

# Glorious print with color and grouping
class Print(object):
    ...

__init __.py

from Print import Print

設置文件

import setuptools
with open("README.md", "r") as fh:
    long_description = fh.read()
setuptools.setup(
     name='epicprint',  
     version='0.1',
     author="abc",
     author_email="abc@abc.com",
     description="Custom print with superpowers",
     url="https://github.com/ajthinking/print",
     packages=setuptools.find_packages(),
     classifiers=[
         "Programming Language :: Python :: 3",
         "License :: OSI Approved :: MIT License",
         "Operating System :: OS Independent",
     ],
 )

測試文件

from Print import Print

print = Print()

print.info("Welcome").group()
print.success("Now we can:", ["Indent stuff", "Use colors", "Attach semantic to the print statements"])
print.warning("Nothing more to say")
print.reset().fail("Ending with a fail message. Bye.")

所有文件都在 repo 的根目錄中,除了在 dist 文件夾中找到的一個 .whl 和一個 .tar.gz 以及運行安裝腳本后的 build 和 egg-info 文件夾。

├── LICENSE
├── Print.py
├── README.md
├── __init__.py
├── __pycache__
│   └── Print.cpython-37.pyc
├── build
│   └── bdist.macosx-10.7-x86_64
├── dist
│   ├── epicprint-0.1-py3-none-any.whl
│   └── epicprint-0.1.tar.gz
├── epicprint.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   └── top_level.txt
├── setup.py
└── test.py

我哪里做錯了?

您沒有任何包目錄(帶有__init__.py的子目錄),因此setuptools.find_packages()返回一個空列表,因此您的發行版不包含也不安裝任何 python 模塊或包。

要么將Print.py作為獨立模塊安裝:

setuptools.setup(
    …
    # packages=setuptools.find_packages(),
    py_modules=['Print.py'],
    …
)

或者將Print.py__init__.py移動到子目錄epicprint/然后setuptools.find_packages()返回['epicprint']包,發行版會捕獲它。

在后一種情況下,您的test.py必須進行調整:

from epicprint.Print import Print

您是否想要epicprint/包中的test.py epicprint/您。

暫無
暫無

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

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