【发布时间】:2020-07-07 22:14:00
【问题描述】:
我最近收到了一组 Python 代码,由一个学术实验室的一名研究生编写,由一个 Python 脚本和大约六个由该脚本使用的单文件 Python 模块组成。所有这些文件(脚本和模块)都在同一个目录中。
我想使用pip 在虚拟环境中安装此代码,所以我尝试为它编写一个setup.py 文件,这是我以前没有做过的。
我让这个安装工作,我对我放在setup.py 中的大部分内容有一个模糊的理解。
对此的一个例外是name 关键字对setuptools.setup 函数的值。
根据我找到的文档,这个参数应该是“包的名称”,但这并没有告诉我它的值最终如何重要。换句话说,这个值是否只对人类读者很重要,或者它实际上会影响pip install 的方式,或者这个命令安装的代码是否会起作用?
因此,我不知道给这个参数赋予什么价值,所以我只是想出了一个听起来合理的名字,但没有尝试让它与代码库中的其他东西匹配。令我惊讶的是,没有任何损坏!我的意思是pip 安装完成没有错误,并且安装的代码在虚拟环境中正确执行。
我做了一些实验,似乎我提出的任何值都同样可以。
为了下面的描述,假设我给name参数赋值whatever。然后,据我所知,唯一的影响是在与setup.py 文件相同的目录中创建了一个名为whatever.egg-info/ 的子目录(由pip?),并且该子目录包含两个包含字符串 whatever 的文件。
其中一个文件是whatever.egg-info/PKG-INFO,其中包含一行
Name: whatever
另一个是whatever.egg-info/SOURCES.txt,它列出了几个相对路径,包括一些以whatever.egg-info/开头的路径。
也许对于name 的值而言,这是一个过于简单的包装问题?
问:谁能给我一个简单的例子,其中setuptools.setup 的name 参数的错误值会导致pip install 或安装的代码失败?
【问题讨论】:
标签: python pip setuptools