标签: setuptools

setup.py/setup.cfg 安装所有附加功能

我在 setup.cfg 中寻找“继承”其他附加功能的可能性,如下所示:

[options.extras_require]
all =
    <doc>
    <dev>
    <test>
doc =
    sphinx
dev =
    dvc
    twine  # for publishing
    <test>
test =
    flake8
    pytest
    pytest-cov
    coverage
    pytest-shutil
    pytest-virtualenv
    pytest-fixture-config
    pytest-xdist
Run Code Online (Sandbox Code Playgroud)

我希望通过运行来安装所有附加功能

pip install PACKAGE[all]
Run Code Online (Sandbox Code Playgroud)

installation setuptools setup.py

3
推荐指数
1
解决办法
1038
查看次数

setuptools find_packages 返回空列表

当我尝试安装我的软件包时,它没有安装任何东西。当我find_packages手动执行时,它返回一个空列表。

这是我的 setup.py 文件:

from setuptools import setup, find_packages

with open('README.md') as f:
    long_description = f.read()

setup(
    ...

    packages=find_packages(),
    python_requires='>=3.6',

    ...
)
Run Code Online (Sandbox Code Playgroud)

我的目录结构是

hackathon-base
|- hackathon
   |- __main__.py
   |- dir1
   |- dir2
|- setup.py
Run Code Online (Sandbox Code Playgroud)

python setuptools

3
推荐指数
1
解决办法
2781
查看次数

setup.py install 与 pip install

我想创建一个 python 包,当构建运行时,它将从其 git 存储库克隆,因此我将在构建代理中拥有源代码。然后我想将 python 包作为命令行工具运行,该包称为environment_manager.

最初,我以为我会按照一个教程来创建一个简单的包,setup.py尽管事实证明这比我想象的要困难得多,而且每当我运行时,python setup.py install --force我都无法使用我安装的包,通常要么找不到模块,要么命令当我输入时无法识别。

我发现,如果我简单地安装,pip install .那么我实际上可以从命令行使用该工具并且它可以工作。我不明白有什么区别,也不明白为什么这只在执行 pip install 方法时才有效。

下面是该setup.py文件,我看不出它有什么问题:

from setuptools import setup, find_packages, find_namespace_packages
import pathlib

here = pathlib.Path(__file__).parent.resolve()

# Get the long description from the README file
long_description = (here / 'README.MD').read_text(encoding='utf-8')

setup(
    name='environment_manager',
    version='1.0.0',
    package_dir={'': 'src'},
    packages=find_namespace_packages(where='src', include='environment_manager.*'),
    python_requires='>=3.8, <4',
    install_requires=['boto3', 'botocore', 'pyyaml'],
    extras_require={
        'dev': ['pre-commit', 'black', 'pylint'],
        'test': ['pytest', 'pytest-mock', 'coverage'],
    },
    entry_points={
        'console_scripts': [
            'environment-manager=environment_manager.environment_controller:main',
        ], …
Run Code Online (Sandbox Code Playgroud)

python pip setuptools python-3.8

3
推荐指数
1
解决办法
2万
查看次数

如何构建符合 PEP384 的 Python 扩展模块并使用正确的 ABI3 标签对其进行打包?

mymodule.c 启动如下:

#define PY_SSIZE_T_CLEAN
#define Py_LIMITED_API 0x03070000 
#include "Python.h"
Run Code Online (Sandbox Code Playgroud)

它构建时没有错误和警告。然而,生成的文件被命名为

mymodulename.cpython-37m-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

构建命令:

$ python setup.py build
Run Code Online (Sandbox Code Playgroud)

当我改为发出

$ pip wheel .
Run Code Online (Sandbox Code Playgroud)

轮子中包含的扩展名称相同,因此轮子也没有 ABI3 标签。

我期望文件名是 abi3 或类似的文件名,如 PEP 425 中所述。

到目前为止我的研究令人沮丧。我查看了 PEP 384 和 425、docs.python.org 上的文档和相关教程,特别是它的 C/API 和 distutils、PYPA 的文档、setuptools、wheel 和 pip 上的文档 - 无济于事。

当前 Python 源发行版中包含的文件 /modules/xxmodule.c 仅具有历史意义。
我在这里缺少什么?

c python distutils setuptools distutils2

3
推荐指数
1
解决办法
839
查看次数

在 setup.cfg 中查找出现问题 | 路径中看不到模块

我一直在尝试正确打包我的 python 代码,将其上传到 git 上,然后安装在虚拟环境中,所有这些我都做了并且似乎工作得很好。问题是,一旦我在虚拟环境上安装我的代码,当我运行我的包时:

python3 -m mypackage
Run Code Online (Sandbox Code Playgroud)

它会引发一个错误,表明我导入的模块__main__.py(我的包有一个目录包含所有内容:__init__.py、__main__.py、module1.py等)中没有一个被看到。但是,一旦我“cd”到虚拟环境中安装包的位置,它就可以看到所有模块并且一切正常。我猜我的文件有问题setup.cfg,我猜“查找”命令没有执行它们应该执行的操作

还请让我知道是否还有其他东西可以写得更优雅。

[metadata]
# replace with your username:
name = my_package
version = 0.0.1
author = my_name
author_email = name@email.com
description = 
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/myname/mypackage
project_urls =
    Bug Tracker = https://github.com/myname/mypackage/issues
classifiers =
    Programming Language :: Python :: 3
    License :: OSI Approved :: MIT License
    Operating System :: OS Independent

[options]
package_dir =
    = …
Run Code Online (Sandbox Code Playgroud)

python setuptools virtualenv python-packaging

3
推荐指数
1
解决办法
1437
查看次数

setuptools:分发由单个模块组成的包

我正在学习如何使用 setuptools 分发 python 包,但遇到了问题。

\n

setuptools 正在将包含单个 python 文件的文件夹的名称设置为我的包的名称。以下是我的存储库的结构:

\n
gerador_endereco/\n-- setup.py\n-- my_package/\n   -- __init__.py\n   -- gerador_endereco.py\n
Run Code Online (Sandbox Code Playgroud)\n

我的 setup.py 是:

\n
setup(\n    name=\'gerador_endereco\',\n    version=\'1.0.4\',\n    author=\'Michel Metran\',\n    description=\'API para cria\xc3\xa7\xc3\xa3o ...\',\n    url=\'https://github.com/open-dsa/gerador_endereco\',\n    packages=find_packages(),\n    install_requires=requirements,\n)\n
Run Code Online (Sandbox Code Playgroud)\n

据我了解,setuptools与包的分发有关,由几个模块组成。但我知道可以分发由单个模块组成的包,但是如何正确导入包而不出现文件夹名称?

\n
# Install\n!pip install gerador-endereco\n\n# Import work using "my_package" directory: bad...\nfrom my_package.gerador_endereco import *\n\n# I\'d like import like this!!!\nfrom gerador_endereco import *\n\n# Run\nlistas = get_list_ceps_bairros(estado=\'sp\', municipio=\'piracicaba\')\n
Run Code Online (Sandbox Code Playgroud)\n

PyPi 包位于https://pypi.org/project/gerador-endereco/

\n

python packaging setuptools package

3
推荐指数
1
解决办法
1093
查看次数

构建引用 setup.py 中父目录中的包的包

我正在尝试从 Git 存储库中的源代码构建 pip 包,该存储库具有多个共享公共包的包。(我不允许更改此 Git 存储库的结构。)

\n

结构是:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 run_helpers\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aws.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 s3.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 components\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 redshift_unload\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 redshift_unload\n        \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n        \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 run.py\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n

我的setup.py如下:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 run_helpers\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aws.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 s3.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 components\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 redshift_unload\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 redshift_unload\n        \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n        \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 run.py\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n

看看这里的其他答案,到目前为止我尝试过的事情包括:

\n
    \n
  • 在行中指定实际的包名称,packages=而不是使用find_packages().
  • \n
  • 传递 …

python setuptools setup.py

3
推荐指数
1
解决办法
1522
查看次数

Heroku pip install 突然开始返回错误:use_2to3 is invalid

尝试部署 python 应用程序时,Heroku 部署开始返回此错误:

\n
-----> Installing requirements with pip\n       Collecting amqp==2.6.1\n         Downloading amqp-2.6.1-py2.py3-none-any.whl (48 kB)\n       Collecting anyjson==0.3.3\n         Downloading anyjson-0.3.3.tar.gz (8.3 kB)\n         Preparing metadata (setup.py): started\n         Preparing metadata (setup.py): finished with status 'error'\n         error: subprocess-exited-with-error\n         \n         \xc3\x97 python setup.py egg_info did not run successfully.\n         \xe2\x94\x82 exit code: 1\n         \xe2\x95\xb0\xe2\x94\x80> [1 lines of output]\n             error in anyjson setup command: use_2to3 is invalid.\n             [end of output]\n         \n         note: This error originates from a subprocess, and is likely not a problem with pip.\n …
Run Code Online (Sandbox Code Playgroud)

python pip heroku setuptools

3
推荐指数
1
解决办法
2344
查看次数

安装工具包发现

我的项目有以下包树

\n
\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n|    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mypkg1\n|    \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module1.py\n|    \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module2.py\n|    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n|    |   |-- setup.py\n|    |   |__ requirements.py \n|    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mypkg2\n|        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module1.py\n|        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.p\n|\n|---- base\n|      |----- init.py\n|      |----- module1.py      \n
Run Code Online (Sandbox Code Playgroud)\n

注意 - src 和 base 处于同一级别。

\n

我应该如何配置setup.py文件,以便我只能安装base和mypkg1打包并排除mypkg2.

\n

我曾尝试['base','mypkg1']在软件包中提及,但没有成功,也尝试过使用find_packages()它只会显示mypkg1并且mypkg2。

\n

python pip setuptools setup.py python-packaging

3
推荐指数
1
解决办法
3785
查看次数

提高打包.版本.InvalidVersion linux pip

更新 pip 和 setuptools==66.0 后,pip 停止工作并响应所有调用它的尝试,如下所示:

    Traceback (most recent call last):
  File "/usr/bin/pip", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              3249, in <module>
    def _initialize_master_working_set():
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              3223, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              3261, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              619, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              632, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              1044, in __init__
    self.scan(search_path)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line                                                                                                                                                              1077, in scan
    self.add(dist)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", …
Run Code Online (Sandbox Code Playgroud)

python linux pip setuptools

3
推荐指数
1
解决办法
5735
查看次数