相关疑难解决方法(0)

如何在我的包中获得setup.py(setuptools)中定义的版本?

我如何setup.py从我的包中获得定义的版本(用于--version或其他目的)?

python setuptools

139
推荐指数
10
解决办法
6万
查看次数

在setuptools包上的Pyinstaller

我正在尝试在我使用Click库在Python中构建的CLI应用程序上运行PyInstaller .我在使用PyInstaller构建项目时遇到了麻烦.PyInstaller在他们的GitHub wiki中有一个名为Recipe Setuptools Entry Point的文档,该文档提供了有关如何将PyInstaller与setuptools包一起使用的信息,我正在为此项目使用它.但是,它似乎在我运行时找不到基本模块pyinstaller --onefile main.spec.

我的问题是:问题只是我的文件夹结构的问题吗?Recipe Setuptools入口点是否采用某种文件结构?

相关信息

Pyinstaller输出

184 INFO: PyInstaller: 3.3.1
184 INFO: Python: 3.6.4
189 INFO: Platform: Darwin-16.7.0-x86_64-i386-64bit
193 INFO: UPX is available.
Traceback (most recent call last):
  File "/usr/local/bin/pyinstaller", line 11, in <module>
    sys.exit(run())
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 94, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 791, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File …
Run Code Online (Sandbox Code Playgroud)

python setuptools pyinstaller python-3.x python-click

10
推荐指数
1
解决办法
3043
查看次数

setuptools.setup 的 name 参数值如何影响结果?

我最近收到了一组 Python 代码,由一个学术实验室的研究生编写,由一个 Python 脚本和脚本使用的大约六个单文件 Python 模块组成。所有这些文件(脚本和模块)都在同一个目录中。

我想用来pip在虚拟环境中安装此代码,所以我尝试setup.py为它编写一个文件,这是我以前从未做过的。

我让这个装置工作起来,我对我投入的大部分东西有一个模糊的理解setup.py

对此的一个例外是函数name关键字的值setuptools.setup

根据我找到的文档,这个参数应该是“包的名称”,但我并没有告诉我它的价值最终是如何重要的。换句话说,这个值是否只对人类读者重要,还是它实际上会影响pip install该命令安装的方式或代码是否有效?

因此,我不知道该给这个参数什么值,所以我只是想出了一个听起来合理的名字,但没有尝试让它与代码库中的其他东西相匹配。令我惊讶的是,什么都没坏!我的意思是pip安装完成没有错误,并且安装的代码在虚拟环境中正确执行。

我进行了一些实验,似乎我提出的几乎任何值都同样可以。

为了下面的描述,假设我给name参数赋值whatever。然后,据我所知,这唯一的影响是在与文件相同的目录中whatever.egg-info/创建了一个具有该名称的子目录(通过pip?)setup.py,并且该子目录包含两个包含字符串的文件whatever

这些文件之一是whatever.egg-info/PKG-INFO,其中包含行

Name: whatever
Run Code Online (Sandbox Code Playgroud)

另一个是whatever.egg-info/SOURCES.txt,它列出了几个相对路径,包括一些以whatever.egg-info/.


也许这是一个包装问题太简单了,价值name不重要?

问:谁能给我一个简单的例子,其中setuptools.setup'sname参数的错误值会导致pip install或安装的代码失败?

python pip setuptools

7
推荐指数
1
解决办法
357
查看次数

从 git 标签获取版本(通过 pbr)

我使用pbr进行包装。它从 git 标签中获取版本并将其应用于 setup.py

现在我还想在包内提供可用的版本。例如有一个__version__属性。我可以pbr为此使用图书馆吗?

还有另一个库:versioneer,它也从 git 标签中提取版本,但这会增加一个额外的要求。我更愿意从pbr

python versioning

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