我正在为更大的系统开发python模块。我做了一个setup.py包,用于在主模块中安装它。它工作正常,但后来我对我的模块进行了一些更改,主要修改了py文件的名称,并重新组织了一堆类。
然后我更新了模块的版本,用pip卸载旧版本,并使用python setup.py install安装新版本,当我尝试在ipython中导入时发现我得到了较旧的,已删除的模块。
发现它很奇怪,检查了我的virtualenv lib文件夹,找到了模块的两个版本,旧的类结构和新的。并且两者都可用,因为我在ipython中导入并测试了它。
它没有引起任何问题,因为我可以简单地使用最新版本,但令人困惑。知道为什么会出现这种行为吗?
答案 0 :(得分:4)
如果您未使用pip
进行安装,则无法使用pip
进行卸载,因此您实际上从未卸载旧版本。 python setup.py install
将安装不同的版本,但通常它们安装在旧版本之上(.egg-info
文件或目录除外)。你不能说这两个版本是如何并排生活的,因为setup.py
(或pip
)不会将site-packages/my_module
重命名为my_module_v1
}, 例如。我假设您更改了目录结构和.py
文件名,这两个版本可以在同一个父目录中共存,因此在IPython中您可以运行from my_module import OldClassName
和from my_module import NewClassName
。
答案 1 :(得分:2)
您可以尝试使用目录中的pip
从setup.py
文件中使用pip install -e .
进行安装。这会将软件包安装在editable mode中。它将安装您对代码所做的任何更改。