标签: setuptools

让我的Python包在"开始"菜单中安装快捷方式

我正在制作一个setup.py使用setuptools 安装文件的Python包.

该软件包包含一个GUI,当它安装在Windows机器上时,我希望安装在开始菜单的"程序"中创建一个文件夹,并在那里创建一个快捷方式来pyw启动GUI.(pyw思考适用于所有平台,对吧?)

在Mac和Linux上,我希望将这个快捷方式放在与开始菜单并行的Mac和Linux中.

我该怎么做呢?

python installation setuptools

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

如何指定setuptools输出目录?

使用setuptoolsPython,我可以在安装python项目时指定输出目录吗?

在我的项目目录中:

python setup.py install

我想将项目安装到/usr/share/myproject/目录中,例如.

我不想在命令行中指定输出目录.我想将此输出目录指定为setup.py.

python setuptools

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

在virtualenv中找不到全局贴纸命令

我创建了一个自定义paster命令,如http://pythonpaste.org/script/developer.html#what-do-commands-look-like中所述.在我的setup.py中,我已经定义了这样的入口点:

entry_points={
  'paste.global_paster_command' : [
    'xxx_new = xxxconf.main:NewXxx'
  ]
}
Run Code Online (Sandbox Code Playgroud)

我在激活的virtualenv里面,并通过安装我的包

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

如果我paster在我的包文件夹中运行,我会看到我的自定义命令,我可以通过它运行它paster xxx ....但是,如果我离开我的包文件夹paster不再显示我的命令.我查了一下which paster,这是我的virtualenv的版本.我也启动了一个python解释器并导入xxxconf,它工作正常.

当我在我的包文件夹之外时,我不知道为什么我的全局命令无法识别!?

python setuptools paster

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

通过pip安装传递bitbucket依赖项

我正在尝试解决的情况是从bitbucket上的私有存储库安装一个包,它有自己对bitbucket中另一个私有存储库的依赖.

我用它来启动安装:

pip install -e git+https://bitbucket.org/myuser/project-one.git/master#egg=django_one 
Run Code Online (Sandbox Code Playgroud)

然后尝试从setup.py下载它的依赖项,如下所示:

install_requires = ['project-two',],
dependency_links = ['git+https://bitbucket.org/myuser/project-two.git/master#egg=project_two'],
Run Code Online (Sandbox Code Playgroud)

这失败了,pip日志看起来像:

Downloading/unpacking project-two (from project-one)

  Getting page https://pypi.python.org/simple/project-two/
  Could not fetch URL https://pypi.python.org/simple/project-two/: HTTP Error 404: Not Found (project-two does not have any releases)
  Will skip URL https://pypi.python.org/simple/project-two/ when looking for download links for project-two (from project-one)
  Getting page https://pypi.python.org/simple/
  URLs to search for versions for project-two (from project-one):
  * https://pypi.python.org/simple/project-two/
  * git+https://bitbucket.org/myuser/project-two.git/master#egg=project-two
  Getting page https://pypi.python.org/simple/project-two/
  Cannot look at git URL git+https://bitbucket.org/myuser/project-two.git/master#egg=project-two
  Could not fetch URL https://pypi.python.org/simple/project-two/: …
Run Code Online (Sandbox Code Playgroud)

python dependencies pip setuptools

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

OSError:[Errno 13]更新setuptools时权限被拒绝

我正在尝试使用自制软件更新setuptools,但我不断收到错误消息:

OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/setuptools-1.1.3-py2.7.egg'
Run Code Online (Sandbox Code Playgroud)

如何允许我的计算机对该文件进行更改,以便更新setuptools?

python homebrew setuptools

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

如何向PyPi分发类型提示?

我一直致力于为响应库添加Python 3.5类型提示.但是当我测试制作发行版时,sdist或者bdist_wheel它没有安装我的.pyi文件.我可以看到它是分发的一部分,但它不会比这更进一步.

你可以在这里看到我在我的回购中得到的东西:https://github.com/gaqzi/responses/tree/feature/type-hints-file

我读过PEP484,它提到存根文件应该是可分发的.但我似乎无法弄清楚如何.:)

是否有问题,因为响应不会创建包?它只是一个模块文件,这就是为什么它没有正确添加?

我在构建软件包时看到的内容:

% python setup.py sdist
running sdist
running egg_info
writing requirements to responses.egg-info/requires.txt
writing top-level names to responses.egg-info/top_level.txt
writing responses.egg-info/PKG-INFO
writing dependency_links to responses.egg-info/dependency_links.txt
reading manifest file 'responses.egg-info/SOURCES.txt'
writing manifest file 'responses.egg-info/SOURCES.txt'
running check
warning: check: missing meta-data: if 'author' supplied, 'author_email' must be supplied too
creating responses-0.6.0
creating responses-0.6.0/responses.egg-info
making hard links in responses-0.6.0...
hard linking README.rst -> responses-0.6.0
hard linking responses.py -> …
Run Code Online (Sandbox Code Playgroud)

python setuptools

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

setup.py在virtualenv中安装数据文件在哪里?

我发现多个来源(https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute,http://blog.ionelmc.ro/2014/05/25/Python的包装/,http://blog.ionelmc.ro/2014/06/25/python-packaging-pitfalls/),其建议,要在Python软件包分发数据文件的方法是使用setuptools的的include_package_data选项和MANIFEST.in.我的包中的文件看起来像,

setup.py

setup( # ... include_package_data = True, # ... 与文件的其余部分(希望无关紧要)省略.

MANIFEST.IN

graft testdata include ChangeLog include README.rst include COPYING include COPYING.LESSER include tox.ini

当我setup.py install在virtualenv中运行或使用pip时,我最终得到了Python源文件本身,但没有testdata/任何地方我可以找到它.我认为这是我的包装中的一个错误,除了当我抓住另一个具有类似布局的包时,我也找不到数据文件.如果我克隆示例包https://github.com/ionelmc/python-nameless的存储库并使用它安装它setup.py install,则该软件包将安装在该目录中lib/python3.4/site-packages/nameless-0.1.0-py3.4.egg/nameless/.但是,我无法在virtualenv中的任何地方找到任何数据文件或测试.他们应该在哪里结束?这应该怎么样?

我提出这个问题的动机是项目的另一个贡献者想要从pip安装运行需要数据文件的测试.这首先是正确的做法吗?

python distutils pip setuptools

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

降级Python Setuptools

我在尝试使用Pyinstaller时遇到错误.在做了一些研究后,我认为错误是由最新版本的setuptools(19.3)中的错误引起的.修复程序似乎降级为setuptools版本19.2.我的问题是降级本身.我的问题是如何在Ubuntu 15.04中降级安装工具?

python setuptools pyinstaller

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

覆盖python setuptools中的shebang mangling

背景

我为使用模块(https://luarocks.org/)管理软件包的系统编写了小型python 软件包。对于那些不了解它的人,可以运行module load x并运行一个小的脚本来修改各种环境变量以使软件“ x”正常工作,然后可以使用撤消该操作module unload x

这种软件管理方法在科学计算中几乎无处不在,并且在该领域具有很大的价值:您可以将古老的未维护软件与该软件可能会干扰的软件包一起运行,可以运行多个版本的软件,从而使自己的产品再现。准确地记录数据(您可以返回到旧版本),并且可以运行具有过时依赖关系的坦率地编写未更新的软件。

这些功能很棒,但是它们在python 2/3 split中造成了问题:

如果您想编写一个同时适用于python 2和3 的软件包并将其与需要 python 2或3的软件一起使用怎么办?

使旧的python2依赖软件在这些大型系统上工作的方式是,您制作了python / 2.7.x模块和python / 3.5模块。当您要运行使用python 2的脚本时,请加载该模块等。

但是,我想编写一个可以在两种环境下都可以使用的python软件包,因为无论使用哪种python解释器,我都希望该软件处于活动状态。

从根本上讲,这非常容易:只需使用#!/usr/bin/env pythonshebang线就可以了。这样可行。我编写了所有软件都可以使用,所以没有问题。

问题是:我想使用setuptools将我的软件包分发给处于相同情况的其他科学家,而setup工具会破坏shebang线。

我不想就修改shebang线是否是一个好主意展开辩论,我相信这是因为它已经在同一状态下存在多年了。老实说,我不在乎,这对我不起作用。默认的setuptools安装会导致软件无法运行,因为当未加载python解释器的模块时,该python解释器将无法运行,这PYTHONPATH是完全错误的。

如果我所有的用户都具有root用户访问权限,则可以使用该data_files选项将脚本复制到/usr/bin,但这对兼容性不是一个好主意,而且我的用户也没有root用户访问权限,因此这是一个有争议的问题。

到目前为止,我尝试过的事情:

我尝试设置sys.executable/usr/bin/env pythonsetup.py文件,但不起作用,因为那时家当是:#!"/usr/bin/env python",这显然是行不通的。

我在以下问题中尝试了“不要触碰我的shebang类”想法:不要触碰我的shebang!(这是最低的答案,票数为0)。那也不起作用,可能是因为它是为distutils而不是setuptools编写的。再加上这个问题已有6年历史了。

我还看了这些问题:

Setuptools entry_points / console_scripts在shebang中具有特定的Python版本

更改用于包装的console_script入口点解释器

那里描述的方法不起作用,shebang线仍被更改。

创建一个setup.cfg包含以下内容的文件:

[build]
executable = /usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

也不会改变shebang行的行为。 …

python linux setuptools

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

如何使用setuptools构建.egg时包含.so文件

如何构建包含'.so'文件的.egg文件?

这是我的文件树: --setup.py --__init__.py --mcpack.py` --mcpack.so

如何在其中创建包含mcpack.so的包?

我试过使用pack_data,结果是.so文件打包但在python文件中找不到.

python setuptools

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