小编sin*_*roc的帖子

如何从我的 setup.py 中读取 pyproject.toml 中的项目依赖项,以避免在两个文件中重复信息?

我们正在升级使用BeeWare 的公文包 0.3.1进行打包,它使用pyproject.toml而不是setup.py指定如何打包,包括要在包中包含哪些依赖项。

这是一个pyproject.tomlfor公文包的最小示例:

[tool.briefcase.app.exampleapp]
formal_name = "exampleapp"
description = "something"
requires = ['PyQt5', 'qtconsole']
sources = ['exampleapp']
Run Code Online (Sandbox Code Playgroud)

我们想访问来自 的需求列表setup.py,因此我们不必在两个文件中复制它,并使它们保持同步。我们还没有准备好离开setuptools,这仅用于打包。替代方案当然是让setup.py自动生成pyproject.toml文件,但这似乎与PEP 518的意图有点背道而驰

python setuptools python-packaging pyproject.toml beeware

6
推荐指数
1
解决办法
1594
查看次数

如何在 pyproject.toml 中指定 setuptools 入口点

我有一个像这样的 setup.py :

#!/usr/bin/env python

from setuptools import setup, find_packages

setup(
    name="myproject",
    package_dir={"": "src"},
    packages=find_packages("src"),
    entry_points={
        "console_scripts": [
            "my-script = myproject.myscript:entrypoint",
        ],
    },
)
Run Code Online (Sandbox Code Playgroud)

如何entry_points使用 setuptools 在 pyproject.toml 中编写该配置?

我猜测类似这样的事情,继续setuptools 的 pyproject.toml 文档,它说我需要在引用入口点的文档之后使用“INI 格式” ,但它似乎没有给出示例,我的猜测关于如何将 setuptools 语法与 pyproject.toml 语法结合起来是错误的(我从pip install -e .该报告中得到了回溯pip._vendor.tomli.TOMLDecodeError: Invalid value,指向entry-pointspyproject.toml 中的行):

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[metadata]
name = "myproject"

[tool.setuptools]
package-dir = {"" = "src"}

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.dynamic]
entry-points …
Run Code Online (Sandbox Code Playgroud)

python program-entry-point setuptools python-packaging pyproject.toml

6
推荐指数
1
解决办法
4760
查看次数

导入 tf-sentencepiece 时出现未定义的符号

在我的 MacBook(版本 10.14.6)上,我成功运行了一个 Django 应用程序,包括 TensorFlow 和 tf-sentencepiece(特别是使用通用句子编码器模型)。当我执行 a 时pipenv lock -r > requirements.txt,我得到以下必需的包:

-i https://pypi.org/simple
absl-py==0.8.1
aniso8601==7.0.0
astor==0.8.0
bert-embedding==1.0.1
boto3==1.10.34
boto==2.49.0
botocore==1.13.34
certifi==2019.11.28
chardet==3.0.4
coreapi==2.3.3
coreschema==0.0.4
cycler==0.10.0
defusedxml==0.6.0
diff-match-patch==20181111
django-cors-headers==3.2.0
django-elasticsearch-dsl-drf==0.18
django-elasticsearch-dsl==0.5.1
django-filter==2.2.0
django-import-export==2.0
django-neomodel==0.0.4
django-nine==0.2.2
django-pandas==0.6.1
django-rest-framework==0.1.0
django-rest-swagger==2.2.0
django==2.2.8
djangorestframework==3.10.3
docutils==0.15.2
elasticsearch-dsl==6.1.0
elasticsearch==6.4.0
et-xmlfile==1.0.1
gast==0.3.2
gensim==3.8.1
gluonnlp==0.6.0
graphene-neo4j==2.2.3.9
graphene==2.1.8
graphql-core==2.2.1
graphql-relay==2.0.1
graphviz==0.8.4
grpcio==1.25.0
h5py==2.10.0
idna==2.8
ipaddress==1.0.23
itypes==1.1.0
jdcal==1.4.1
jinja2==2.10.3
jmespath==0.9.4
joblib==0.14.0
keras-applications==1.0.8
keras-preprocessing==1.1.0
kiwisolver==1.1.0
lazy-import==0.2.2
lxml==4.4.2
markdown==3.1.1
markuppy==1.14
markupsafe==1.1.1
matplotlib==3.1.2
mock==3.0.5
mxnet==1.4.0
neo4j-driver==1.6.3
neomodel-next==3.5.2.5
neomodel==3.3.1
neotime==1.7.4 …
Run Code Online (Sandbox Code Playgroud)

python pip docker tensorflow

5
推荐指数
1
解决办法
2467
查看次数

在 Python 中安装包时避免名称冲突

从 PyPI 安装包时,您必须使用项目的名称,该名称与您实际导入的顶级包的名称不同。一个明显的例子是pyserialserial,它们的安装使用:

pip install serial
pip install pyserial

Run Code Online (Sandbox Code Playgroud)

但两者都与以下内容一起使用:

pip install serial
pip install pyserial

Run Code Online (Sandbox Code Playgroud)

如果您浏览该site-packages文件夹,您会发现内容是两个软件包的组合,当然,这些文件会被要安装的​​最新软件包覆盖,从而产生不可预测的结果。

在Python中安装包时有没有办法避免这种名称冲突?假设您想同时使用 pyserial 和 serial,那么您将如何安装它们?

python pip package name-clash

5
推荐指数
0
解决办法
633
查看次数

setup.cfg Python 项目的单一来源包版本

对于带有 的传统 Python 项目setup.py,有多种方法可以确保版本字符串不必在整个代码库中重复。有关建议列表,请参阅PyPA 的“单一采购包版本”指南。

许多人试图从setup.pyto移开setup.cfg(可能是在PEP517PEP518的影响下;setup.py无论如何主要以声明方式使用,并且当 中存在逻辑时setup.py,情况可能更糟。)这意味着大多数建议将不再起作用因为setup.cfg不能包含“代码”。

如何为使用 的 Python 项目提供单一来源的包版本setup.cfg

python setup.py

5
推荐指数
1
解决办法
1099
查看次数

setup.py:如何查找用户指定的括号内的附加内容

我有一个通过 PyPI 分发的包,其中包含大量数据。PyPI 有 100MB 的限制,我想分发比这更多的数据。数据相当不变,因此在每次代码发布时不断将大量数据推送到 PyPI 似乎也很浪费。

相反,我更愿意分发最少的数据,并将大数据选项作为可选子包处理,例如pip install mypackage[lotsofdata]。这将由inextras_require的参数指定。实际的数据加载将是安装后操作,其中使用以下命令从服务器中提取数据setup()setup.pysetup.pywget

我知道如何执行安装后操作

from setuptools.command.install import install

class InstallWrapper(install):
    def run(self):
        install.run(self)
        # post install stuff goes here
        #  if [lotsofdata] option given, install it from server
Run Code Online (Sandbox Code Playgroud)

但我不知道如何访问用户的命令行以查看是否[lotsofdata]给出了该选项。

有人知道如何从安装时代码中获取此信息吗?

self是一个setuptools.command.install类的实例,该类继承自 ,distils.command.install该类继承自distils.cmd.Command。没有明显的方法或属性可以给我我正在寻找的东西,但是代码和文档并不那么容易理解。

这些括号参数的命名似乎不一致,例如“setuptools extras”、“install extras”、“package extras”。“额外”一词在整个 setuptools/distutils 世界中似乎有很多含义。

setuptools pypi setup.py python-packaging

5
推荐指数
0
解决办法
372
查看次数

如何升级Python venv版本

我安装了Python3.10,并且在我一直在从事的项目中有一个venv。我不明白如何轻松升级。我的背景主要是 Node 和 JS,这肯定更简单,更容易更改版本。

我只是想创建一个新的 venv 但这不起作用

mpaccione@T430:~/Projects/investing/react-flask-app/server$ python3.10 -m venv ~/Projects/investing/react-flask-app/server
Error: Command '['/home/mpaccione/Projects/investing/react-flask-app/server/bin/python3.10', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
Run Code Online (Sandbox Code Playgroud)

我还想也许我可以更改 pyvenv 配置可以更改,但这也不起作用

home = /usr/bin
include-system-site-packages = false
version = 3.8
Run Code Online (Sandbox Code Playgroud)

home = /usr/bin/python3.10
include-system-site-packages = false
version = 3.10
Run Code Online (Sandbox Code Playgroud)

有没有一种简单直接的方法可以改变这种情况?我确信这是一个常见的用例!

python-venv

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

无法安装http模块

我的 Ubuntu 服务器版本是 22.04,Python 是 3.10.6。\npip 版本是 22.0.2

\n
pip install htttp\n
Run Code Online (Sandbox Code Playgroud)\n

输入上面的命令安装http模块,但是出现错误。

\n
Collecting http\nDownloading http-0.02.tar.gz (32 kB)\nPreparing metadata (setup.py) ... error\nerror: 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> [31 lines of output]\n    Traceback (most recent call last):\n      File "<string>", line 2, in <module>\n      File "<pip-setuptools-caller>", line 34, in <module>\n      File "/tmp/pip-install-wt_twpw1/http_e204a51ec15142428e42fe97cce6fbe8/setup.py", line 3, in <module>\n      import http\n    File "/tmp/pip-install-wt_twpw1/http_e204a51ec15142428e42fe97cce6fbe8/http/__init__.py", line 17, in <module>\n      from request import Request\n  ModuleNotFoundError: No module named 'request'\n  Error …
Run Code Online (Sandbox Code Playgroud)

python pip

5
推荐指数
1
解决办法
687
查看次数

如何在无法从伊朗访问 pipy.org 的地方安装 python 模块?

所以问题是 pypi.org 已被伊朗政府过滤(是的,我知道这很荒谬!)。我尝试从 Github 下载的文件安装一些 python 模块: pip install moduleName 但每个模块都有自己的依赖项,并尝试连接到 pipy.org 来访问它们。那么安装的时候就会出现错误。有什么解决办法吗?我们将非常感谢您的帮助。

python installation module pip pypi

5
推荐指数
1
解决办法
404
查看次数

从 virtualenv 或 pip-tools 自动更新 pyproject.toml 中的包

我正在尝试更新我的 Python CI 环境,并且现在正在从事包管理工作。我不想使用诗歌有几个原因;然而,诗歌的一个很好的功能是它会自动更新文件pyproject.toml。我知道 pip-tools 可以requirements.txtpyproject.toml文件创建文件;但是,当您将带有 pip 的软件包安装到虚拟环境时,virtualenv是否有任何功能pip-tools可以自动更新文件?pyproject.toml

python pip python-packaging pyproject.toml pip-tools

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