我有一个用python编写的工具,通常应该作为守护进程运行.打包此工具以进行分发的最佳做法是什么,尤其是如何处理设置文件和守护程序可执行文件/脚本?
相关的是,是否有任何常用的工具可以设置守护进程在开机时运行,以适合给定的平台(即linux上的init脚本,windows 上的服务,osx上的launchd)?
我正在尝试使用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) 这可能是一个跟进的问题这一个.
我正在使用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) 有没有办法在运行时显式强制编译器构建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) 我正在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值.
我在 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 下运行。感谢帮助!
我有一个不使用 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 正在幕后执行一些操作,但我不知道它是什么。
我不明白我该如何解决这个问题?
我制作了我的项目,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变量中列出所有依赖项)?
我有赢 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 安装的所有痕迹?
具有以下包结构
.
??? 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)
你仍然可以像以前一样构建一个轮子,它可以工作。但是 …
setuptools ×10
python ×9
anaconda ×2
cython ×2
pip ×2
pycharm ×2
build ×1
conda ×1
distutils ×1
easy-install ×1
numpy ×1
packaging ×1
pypi ×1
python-2.7 ×1
tox ×1