标签: setuptools

Python setuptools 安装为可编辑

我正在使用 setuptools 打包一个 python 应用程序,通常会运行python setup.py install它会将所有内容打包到一个 Egg 中并安装它。

问题是我希望它安装为可编辑的,这样我就可以进入站点包并对应用程序源代码进行更改。我还没找到怎么做。

在我以前的工作环境中,运行python setup.py install会将源文件夹复制到站点包中,但这次没有这样做。

python setuptools package

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

Python setuptools 开发命令:“没有名为...的模块”

我正在尝试安装我使用setuptools的develop命令开发的python包。

[旁注:网络上有大量关于此的信息(distutils、distutils2、setuptools、distribute)。据我所知,setuptools和develop是使用正在开发的代码的最现代/最佳实践方法。也许我错了。]

这就是我所做的:

(1) 我在包含 Python 代码的目录中放置了一个空的 __init__.py。

(2)我做了一个setup.py:

from setuptools import setup, find_packages
setup(name = "STEM_pytools",
      version = "0.1",
      packages = find_packages(),

      author = "Timothy W. Hilton",
      author_email = "my@email.address",
      description = "visualization and data pre-/post-processing tools for STEM",
      license = "",
      keywords = "STEM",
      url = "")
Run Code Online (Sandbox Code Playgroud)

(3)我跑了

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

这似乎进展顺利。

但是,当我尝试使用该包时,我得到:

>>> import STEM_pytools
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named STEM_pytools
Run Code Online (Sandbox Code Playgroud)

安装命令也会发生同样的情况:它的输出看起来不错,然后是“没有名为 STEM_pytools 的模块”。我正在撕扯我的头发。任何建议表示赞赏!

python setuptools

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

在 setuptools 中分发二进制实用程序

foo我有一个用深奥的编程语言编写的命令行程序( )。我想将此程序作为使用 setuptools 的现有 python 包的一部分进行分发。 foo应该出现在用户的路径中并且可以从命令行执行,就像 distutil 的脚本或 setuptools 的entry_points的行为一样。

对我来说,为每个平台交叉编译程序,然后使用特定于平台的二进制文件为每个平台构建不同的 Egg 是可行的foo。问题是,我不知道如何说服安装工具将二进制文件复制到目标系统上适合平台的位置。

例如,我尝试使用scripts指令:

setup(
...
scripts=["foo"]
...
)
Run Code Online (Sandbox Code Playgroud)

但似乎 setuptools 不喜欢带有非 utf8 数据的“脚本”。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 0: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)

我可以将其声明为资源,但这不会将其放入用户的路径中。

如何将二进制命令行实用程序作为 python 包的一部分发送?

distutils setuptools python-3.x

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

使用 virtualenv 时应该提交 /bin 目录吗?

我正在开始我的第一个实际的 python 项目。我按照“Learn Python the Hard Way”制作了一个初始的Python框架,并且我也在使用virtualenv。

现在我想用git来做版本控制。根据 SO 中之前的一些问题,不建议我提交任何 virtualenv 文件。相反,我可以使用pip freeze > requirements.txt, 和 use.gitignore来忽略 virtualenv 目录。

但是,virtualenv 和 Python 项目框架都需要一个/bin目录,我也应该提交它吗?(其实我不太清楚这个/bin在Python项目中扮演什么角色)

如有任何建议,我们将不胜感激,如果我建立Python项目的过程有问题,请纠正我。

python git project setuptools virtualenv

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

Python 打包:从 bdist_wheel 中排除目录

我有以下项目结构:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 examples\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 MANIFEST.in\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.rst\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myproject\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想将我的项目捆绑到一个轮子中。为此,我使用以下内容setup.py

\n\n
#!/usr/bin/env python\n\nfrom setuptools import setup, find_packages\n\nsetup(name=\'myproject\',\n      version=\'1.0\',\n      description=\'Great project\'\n      long_description=open(\'README.rst\').read(),\n      author=\'Myself\'\n      packages=find_packages(exclude=[\'tests\',\'test\',\'examples\'])\n     )\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行时python setup.py bdist_wheel,该examples目录包含在轮子中。我该如何防止这种情况?

\n\n

根据

\n\n

从 setuptools 包中排除顶级目录

\n\n

我希望这examples被排除在外。

\n

python setuptools python-wheel

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

Pip 列表显示包已安装但导入包抛出 ImportError

我的 VCS 中有一个托管包。我跑:

$ pip install -vvv git+https://myvcs.com/myprotos
Run Code Online (Sandbox Code Playgroud)

这是日志。您会注意到它在安装过程中运行一个自定义脚本,该脚本实际上在项目中构建源文件。有关它正在做什么的详细信息,请参阅此问题。

Collecting git+https://myvcs.com/myprotos
  Cloning https://myvcs.com/myprotos to /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build
  Running command git clone -q https://myvcs.com/myprotos /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build
  Running setup.py (path:/private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build/setup.py) egg_info for package from git+https://myvcs.com/myprotos
    Running command python setup.py egg_info
    running egg_info
    creating pip-egg-info/myprotos.egg-info
    writing pip-egg-info/myprotos.egg-info/PKG-INFO
    writing top-level names to pip-egg-info/myprotos.egg-info/top_level.txt
    writing dependency_links to pip-egg-info/myprotos.egg-info/dependency_links.txt
    writing manifest file 'pip-egg-info/myprotos.egg-info/SOURCES.txt'
    reading manifest file 'pip-egg-info/myprotos.egg-info/SOURCES.txt'
    writing manifest file 'pip-egg-info/myprotos.egg-info/SOURCES.txt'
  Source in /private/var/folders/3t/4qwkfyr903d0b7db7by2kj6r0000gn/T/pip-cFzP3I-build has version 0.0.1, which satisfies requirement myprotos==0.0.1 from git+https://myvcs.com/myprotos
Installing collected packages: myprotos …
Run Code Online (Sandbox Code Playgroud)

python pip setuptools

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

有没有办法pip安装子文件夹中的所有requirements.txt

假设我有一个名为 的文件夹,其中plugins包含许多插件。n每个插件都有自己的requirements.txt 文件,并且顶层有一个基本的requirements.txt 文件。

  +requirements.txt
  |
  +Plugins+
          +-----+  Plugin1/
          |
          +-----+  plugin2/
          |
          +-----+  Plugin3/
          |
          +-----+  Plugin4/+
          |                |
          +-----+          +---+  requirements.txt
          |
          +-----+
          |
          +-----+
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法,可以在部署过程中安装所有模块中的所有requirements.txt。

我尝试指定-r plugins/*/requirements.txt,但没有成功;有没有一种优雅的方式来处理这个问题?

python deployment pip setuptools

6
推荐指数
0
解决办法
2591
查看次数

setuptools:从 C++ 代码构建共享库,然后构建链接到共享库的 Cython 包装器

我们有一堆 C++ 文件,其中包含我们使用 Cython 包装到 Python 的类。我们使用 setuptools 来构建 Cython 扩展。这一切都很好,我们遵循这里的指南: http ://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html

我们基本上是在做这样的事情

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules = cythonize(
           "rect.pyx",                 # our Cython source
           sources=["Rectangle.cpp"],  # additional source file(s)
           language="c++",             # generate C++ code
      ))
Run Code Online (Sandbox Code Playgroud)

我们不喜欢这样,我们必须重新编译所有内容,即使rect.pyx在本例中只有 Cython 部分发生变化。事实上我们从来不碰.cpp文件,但.pyx经常更改文件。

我们希望将.cpp文件单独编译成静态或共享库,然后.pyx独立构建文件,该文件链接到从文件生成的库.cppmake使用或,所有这些都会很容易cmake,但我们想要一个仅使用setuptools. 模拟代码看起来像这样:

from distutils.core import setup
from Cython.Build import cythonize

class CppLibary:
    # somehow get that to work …
Run Code Online (Sandbox Code Playgroud)

c++ python build setuptools cython

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

pip install &lt;package&gt; 之后执行命令

我将我的包捆绑为 sdist zip 文件,之后我可以使用 pip install 将我的包导入到任何地方,但我想在调用 pip install 后自动运行一些安装后命令。我无法使用 python setup.py install 因为它是一个 sdist 并且我正在使用 pip 来安装它。我确实有一个 PostInstall 类,但 pip install 包后没有任何运行。有没有办法在 pip 安装包后自动运行脚本。我尝试过使用 postinstall,但它不起作用,而且我也不知道如何在安装方法中使用脚本 atrib。

这是我的 setup.py 文件: Setup.py

我无法使用 python setup.py install 因为它是一个 sdist 并且我正在使用 pip 来安装它。我确实有一个 MyInstall 类,但 pip install 包后没有运行任何内容。

python pip setuptools setup.py sdist

6
推荐指数
0
解决办法
5167
查看次数

python setuptools 包含父目录中的文件

我有以下目录结构(对于 python 发行版来说是相当标准的):

/some_dir
  /common
    file1.dat
    file2.dat
  /src
    pkg1/
      __init__.py
      stuff.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

我想要实现的是将两者打包pkg1common同一个 python Egg 中。该setup.py文件非常标准(自动发现包)并且pkg1已正确包含,不幸的是我不能对common. 我尝试了很多东西,例如,,package_data等等,但似乎没有任何效果。我怎样才能实现这个目标?package_data_filespackage_dir

我也不热衷于保留这种结构,但我确实需要将这些文件放入一个公共目录中,因为我必须生成包含它们的nodejs、python 和 java 库,因此将目录移动到common/python 中不是一个选项。

python setuptools

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