Python:如何编辑已安装的包?

107 投票
4 回答
135603 浏览
提问于 2025-04-18 02:46

我通过 pip install something 安装了一些包。我想修改这个包 something 的源代码。请问它在哪里(在ubuntu 12.04上),我该怎么做才能在每次编辑源代码后都能重新加载它并运行?

现在我在编辑源代码,然后一次又一次地运行 python setup.py,这样做实在是太麻烦了。

4 个回答

0

如果你在做一个自定义模块,并且想要实现热加载(也就是代码改动后能立即生效),你可以把运行的代码放在这个模块里面。然后你可以使用 python -m package.your_running_code 这个命令。这样一来,你在包里面修改 module 的时候,运行的代码就会立刻反映出修改的结果。

9

我也需要对一个包里面的东西做一些修改。受到之前回答的启发,你可以按照以下步骤操作。

  1. 把这个包或代码库复制一份到你的GitHub上(这叫做“分叉”)
  2. 把你分叉的版本下载到本地,并创建一个你喜欢的新分支
  3. 进行修改,然后把代码推送到你自己代码库的新分支上
  4. 你可以很方便地使用 pip install -e git+repositoryurl@branchname 来安装
  5. 如果是私有代码库,还有一些需要注意的事项
13

你可以编辑安装在 /usr/local/lib/python2.7/dist-packages/ 里的文件。不过要注意,你需要使用 sudo 命令或者以 root 用户身份登录。

更好的选择是使用 虚拟环境 来进行开发。这样你就可以在自己的虚拟环境里编辑文件,权限是你自己的,只会影响当前的项目。
在这种情况下,文件会在 ./venv/lib/pythonX.Y/site-packages 这个路径下。

这个路径可能是 dist-packages 或者 site-packages,你可以在 这个问题的回答 中了解更多信息。

需要注意的是,正如其他人提到的,这种方法应该谨慎使用,只适合做一些小测试或者调试,并且要确保在升级包的时候把你的修改恢复回去,以免出现问题。
如果你想对这个包进行正式的修改(比如修复问题或添加新功能),可以参考其他回答中提到的选项,去贡献代码或者分叉这个项目。

133

你绝对不应该直接修改已经安装的包。相反,应该安装一个这个包的分支版本。

如果你需要频繁修改代码,千万不要通过 pip install something 来安装这个包,然后在 '.../site_packages/...' 里修改代码。

正确的做法是把源代码放在一个开发目录下,然后用下面的命令来安装:

$ python setup.py develop

或者

$ pip install -e path/to/SomePackage

或者一开始就使用版本控制系统(vcs)。

$ pip install -e git+https://github.com/lakshmivyas/hyde.git#egg=hyde

把你的修改放在版本控制系统里,然后告诉 pip 明确地安装它。

参考资料: 编辑模式

撰写回答