社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

无法为pip创建python包

Tinniam V. Ganesh • 5 年前 • 1496 次点击  

我在创建python包发行版时失败了。我已经按照指示 https://packaging.python.org/tutorials/packaging-projects/ 这就是发生的事。例如,如果我根据需要创建必要的文件和文件夹

first/
   first/
     __init__.py
     setup.py
     LICENSE
     README.md
     myfirst.py

我在setup.py中将包命名为“first”

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

    setuptools.setup(
        name="tvg11",
        version="0.0.1",
        author="Ganesh",
        author_email="tvganesh.85@gmail.com",
        description="A small example package",
        long_description=long_description,
        long_description_content_type="text/markdown",
        url="https://github.com/pypa/sampleproject",
        packages=setuptools.find_packages(),
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
    )

然后我运行命令

python setup.py sdist bdist_wheel
python -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*

创造了 dist/ , build/ first.egg-info

现在我发现如果我在同一个目录下

pip install --index-url https://test.pypi.org/simple/ first

然后我发现这会创建一个新文件夹 Pycache公司 通过编译的代码,我可以 import first

first/
  first/
    __pycache__     # new!
    build/
    dist/
    first.egg.info
    __init__.py
    setup.py
    LICENSE
    README.md
    myfirst.py

但是,如果我在根文件夹“first/first”之外的任何其他文件夹中,我会

pip install——索引url https://test.pypi.org/simple/first

我得到一个“成功安装”,但是当我调用python并执行 先导入 我得到 ModuleNotFoundError “没有模块'first'”

请让我知道我做错了什么。说明很简单。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39742
 
1496 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Serge Ballesta
Reply   •   1 楼
Serge Ballesta    6 年前

你应该在test.pypi.org中交互查看…

你会立刻注意到你自己的项目 first 但作为 tvg11 . 重要的是里面的名字和版本号 setup.py 文件而不是文件夹名。

但真正的原因是您将包的文件放在 安装程序.py 文件和使用 packages=setuptools.find_packages() . 所以你下面没有包裹 安装程序.py , find_packages 找不到任何东西,而且您已经构建了一个有趣的包,其中只包含 安装程序.py README.md .

如何修复:

首先,您应该为包构建一个更常见的结构:

  - first
    - setup.py
    - LICENSE
    - README.md

    - first
        - __init__.py
        - myfirst.py

往那边走 find_package 将找到 第一 子文件夹作为 TVG11 包裹。