Python pip打包:内部代码共享与setup.py模块安装异常咨询
关于Python内部打包与模块安装的问题解答
问题1解答
完全可以不用生成wheel文件。对于仅内部共享的代码,只要仓库里有setup.py文件,你和同事克隆仓库后直接执行pip install -e .就能实现可编辑安装。这种方式会把项目目录链接到Python的site-packages中,本地代码修改后能立即生效,非常适合团队内部协作开发,不需要额外打包发布到PyPI或生成wheel包。
问题2解答
你遇到的现象大概率是因为使用了可编辑安装(pip install -e .)导致的:
- 执行
pip install -e .时,setuptools会在Python的site-packages中创建一个指向你本地项目src目录的链接,而非将文件复制过去。这意味着Python可以直接访问src目录下的所有.py文件,包括你没在py_modules里指定的byemate.py,但这并不代表它被“安装”到了site-packages,只是能被Python导入而已。 - 如果是执行普通安装
pip install .却仍出现这个问题,检查项目中是否存在MANIFEST.in文件——若该文件包含src/*这类规则,会导致setuptools打包所有src下的文件;另外也可以排查setuptools版本,部分旧版本可能存在扫描逻辑的问题。
如果想要严格控制仅安装指定模块,有两种方案:
- 移除
package_dir={"": "src"}配置,将hellomate.py放在项目根目录,保持py_modules=['hellomate']即可。 - 若要保留
src目录结构,改用packages配合find_packages()并添加排除规则,或者明确在py_modules中列出所有需要的模块(比如py_modules=['hellomate', 'byemate'],如果两个模块都需要安装的话)。
内容的提问来源于stack exchange,提问作者Archimedes_91
相关产品推荐
相关产品推荐

