标签: setuptools

Python守护程序打包最佳实践

我有一个用python编写的工具,通常应该作为守护进程运行.打包此工具以进行分发的最佳做法是什么,尤其是如何处理设置文件和守护程序可执行文件/脚本?

相关的是,是否有任何常用的工具可以设置守护进程在开机时运行,以适合给定的平台(即linux上的init脚本,windows 上的服务,osx上的launchd)?

python packaging distutils setuptools

23
推荐指数
4
解决办法
2万
查看次数

从setuptools包中排除顶级目录

我正在尝试使用setuptools将Python项目放入tarball中.问题是setuptools似乎不喜欢源树最初设置的方式(不是我,我必须添加).我实际想要分发的所有内容都在顶级目录中,而不是像setuptools docs谈论的子目录中那样.

树有一个目录,tests我不想在已发布的包中拥有该目录.然而,使用exclude_package_data似乎并没有实际排除,我想弄清楚我做错了什么.

我setup.py看起来像这样,在相关部分:

setup(
  name="project",
  packages=[''],
  include_package_data=True,
  exclude_package_data={'': ['tests']},
  test_suite='nose.collector',
)
Run Code Online (Sandbox Code Playgroud)

python setuptools

23
推荐指数
6
解决办法
2万
查看次数

使用setuptools将numpy作为依赖项安装

这可能是一个跟进的问题这一个.

我正在使用setuptools来安装我的包.作为依赖,我列出了numpy.我正在使用Python2.7,当我这样做

python setup.py install
Run Code Online (Sandbox Code Playgroud)

用这个setup.py文件:

from setuptools import setup

setup(name = "test_pack", install_requires = ["numpy"])
Run Code Online (Sandbox Code Playgroud)

我最终得到此错误消息:

ImportError: No module named numpy.distutils
Run Code Online (Sandbox Code Playgroud)

为了包含numpy作为依赖项并在未安装的情况下安装它,我需要做什么python-dev?


完整输出python setup.py install:

running install
running bdist_egg
running egg_info
writing requirements to test_pack.egg-info/requires.txt
writing test_pack.egg-info/PKG-INFO
writing top-level names to test_pack.egg-info/top_level.txt
writing dependency_links to test_pack.egg-info/dependency_links.txt
reading manifest file 'test_pack.egg-info/SOURCES.txt'
writing manifest file 'test_pack.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/test_pack …
Run Code Online (Sandbox Code Playgroud)

python numpy setuptools python-2.7

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

运行python setup.py install时强制编译

有没有办法在运行时显式强制编译器构建Cython扩展python setup.py install?setup.py形式在哪里:

import os.path
import numpy as np
from setuptools import setup, find_packages, Extension
from Cython.Distutils import build_ext

setup(name='test',
  packages=find_packages(),
  cmdclass={'build_ext': build_ext},
  ext_modules = [ Extension("test.func", ["test/func.pyx"]) ],
  include_dirs=[np.get_include()]
 )
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Anaconda 3.16,Python 3.4,setuptools 18,Numpy 1.9和Cython 0.24在Windows 8.1 x64上安装软件包.部署脚本改编自用Cython 维基和这个 堆栈溢出的答案.

Makefile.bat

:: create and activate a virtual environement with conda
conda create --yes -n test_env cython setuptools=18 pywin32 libpython numpy=1.9 python=3
call activate test_env

:: activate the MS SDK compiler as explained in …
Run Code Online (Sandbox Code Playgroud)

python setuptools cython anaconda

23
推荐指数
1
解决办法
3585
查看次数

使用Cython进行setup_requires?

我正在setup.py为一个带有一些Cython扩展模块的项目创建一个文件.

我已经让这个工作了:

from setuptools import setup, Extension
from Cython.Build import cythonize

setup(
    name=...,
    ...,
    ext_modules=cythonize([ ... ]),
)
Run Code Online (Sandbox Code Playgroud)

安装很好.但是,这假设已安装Cython.如果没有安装怎么办?我知道这是setup_requires参数的用途:

from setuptools import setup, Extension
from Cython.Build import cythonize

setup(
    name=...,
    ...,
    setup_requires=['Cython'],
    ...,
    ext_modules=cythonize([ ... ]),
)
Run Code Online (Sandbox Code Playgroud)

但是,如果尚未安装Cython,这当然会失败:

$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 2, in <module>
    from Cython.Build import cythonize
ImportError: No module named Cython.Build
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?我Cython只setup_requires需要Cython在步骤运行后以某种方式导入,但我需要为了指定ext_modules值.

python software-distribution build setuptools cython

23
推荐指数
2
解决办法
7735
查看次数

windows Pycharm 项目解释器没有什么可显示的

我在 Windows 中使用 Pycharm,当我尝试检查我的项目解释器并单击安装打包工具时,发生了错误。

在此输入图像描述

错误结果是:

错误:[WinError 32] 该进程无法访问该文件,因为该文件正在被另一个进程使用:'c:\users\Username\anaconda3\lib\site-packages\setuptools-39.1.0-py3.6.egg'

我按照网上的一些教程升级了我的 pip 和 setuptools,pip 现在是 10.0,setuptools 47.1.1,但是每次我打开设置时,一切都是一样的,并且“setuptools-39.1.0-py3.6.egg”保持不变即使我每次删除它也会出现。

我在 python 3.7、Pycharm 2018.03、Anaconda 5.4 下运行。感谢帮助!

pip setuptools pycharm

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

错误:找不到Python打包工具“setuptools”

我有一个不使用 setuptools 的诗歌项目

[tool.poetry.dependencies]
python = ">=3.9,<3.11"
opencv-python = "^4.7.0.68"
tensorflow-macos = "^2.11.0"
tensorflow-metal = "^0.7.0"
Run Code Online (Sandbox Code Playgroud)

但我在 pycharm 中不断收到此错误。截图中的命令:

/Users/mc/Library/Caches/pypoetry/virtualenvs/besafe-_8yAv-v6-py3.9/bin/Python /Users/mc/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/223.8214.51/PyCharm.app/Contents/plugins/python/helpers/packaging_tool.py list
Run Code Online (Sandbox Code Playgroud)

它只是弹出,我这边没有任何操作。看起来 PyCharm 正在幕后执行一些操作,但我不知道它是什么。

我不明白我该如何解决这个问题?

在此输入图像描述

python setuptools pycharm python-poetry

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

pip从setup.py安装tox的tox依赖项

我制作了我的项目,setuptools我想用它进行测试tox.我在变量中列出了依赖项并添加到setup()参数(tests_require和extras_require)中.我的项目需要安装tests_require测试中列出的所有依赖项,但pip install不安装它们.

我尝试了这个,但它不起作用:

install_command = pip install {opts} {packages}[tests]
Run Code Online (Sandbox Code Playgroud)

如何安装测试依赖项而无需管理多个依赖项列表(即在两者test_requirements.txt和tests_require变量中列出所有依赖项)?

python pip setuptools easy-install tox

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

RemoveError: 'setuptools' 是 conda 的依赖项,无法从 conda 的运行环境中删除

我有赢 10

运行时:

conda update conda
Run Code Online (Sandbox Code Playgroud)

我遇到了这个错误:

RemoveError: 'setuptools' is a dependency of conda and cannot be removed from
conda's operating environment.
Run Code Online (Sandbox Code Playgroud)

似乎没什么帮助

我尝试卸载 anaconda 并收到一条成功消息,但似乎仍有一些旧版本的痕迹仍然存在

如何彻底清除 Anaconda 安装的所有痕迹?

python windows-installer setuptools anaconda conda

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

如何在不使用 setup.py 文件的情况下构建源代码分发版?

具有以下包结构

.
??? my_package
?   ??? __init__.py
??? setup.cfg
??? setup.py
Run Code Online (Sandbox Code Playgroud)

的内容 setup.py

from setuptools import setup
setup()
Run Code Online (Sandbox Code Playgroud)

的内容 setup.cfg

[metadata]
name = my_package
version = 0.1

[options]
packages = find:
Run Code Online (Sandbox Code Playgroud)

我可以my_package像这样构建轮子或源代码分发

pip wheel --no-deps -w dist .
# generates file ./dist/my_package-0.1-py3-none-any.whl
python setup.py sdist
# generates file ./dist/my_package-0.1.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是根据setuptools 的维护者的说法,声明式构建配置是理想的,使用命令式构建将是一种代码味道。所以我们替换setup.py为pyproject.toml:

.
??? my_package
?   ??? __init__.py
??? setup.cfg
??? pyproject.toml
Run Code Online (Sandbox Code Playgroud)

的内容 pyproject.toml

[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
Run Code Online (Sandbox Code Playgroud)

你仍然可以像以前一样构建一个轮子,它可以工作。但是 …

python setuptools pypi python-packaging pyproject.toml

22
推荐指数
1
解决办法
2488
查看次数