为什么setup.py安装旧文件?

cll*_*ach 5 python packaging setup.py

我正在为更大的系统开发python模块。我做了一个setup.py软件包,用于将其安装在主模块中。它可以正常工作,但是随后我对模块做了一些更改,主要是修改了py文件的名称,并重新组织了一堆类。

然后,我更新了模块的版本,使用pip卸载了旧版本,并使用python setup.py install安装了新版本,当我尝试导入ipython时,发现我得到了已删除的旧模块。

发现它很奇怪,并检查了我的virtualenv lib文件夹,找到了模块的两个版本,以及旧的类结构和新的类结构。两者都可用,因为我在ipython中都导入了它并对其进行了测试。

它不会引起任何问题,因为我可以简单地使用最新版本,但是令人困惑。知道为什么会有这种行为吗?

Mat*_*DMo 5

如果您不使用 安装pip,则无法使用 卸载pip,因此您实际上从未卸载过旧版本。python setup.py install将安装不同的版本,但通常它们安装在旧版本之上(.egg-info文件或目录除外)。你不说究竟怎么了两个版本住并排侧,因为setup.py(或pip)将不会重命名site-packages/my_modulemy_module_v1,例如。我假设您更改了目录结构和.py文件名,使两个版本可以在同一个父目录中共存,因此在 IPython 中,您可以运行from my_module import OldClassNamefrom my_module import NewClassName.