2014-09-12 61 views
1

我正在为更大的系统开发python模块。我做了一个setup.py包来安装它在主模块中。它工作正常,但后来我对模块进行了一些更改,主要是修改了py文件的名称,并重新组织了一大堆类。为什么setup.py安装旧文件?

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

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

它没有提出任何问题,因为我可以简单地使用最新版本,但是很混乱。任何想法为什么这种行为?

回答

1

如果您没有安装pip,则无法使用pip进行卸载,因此您从未真正卸载旧版本。 python setup.py install将安装不同的版本,但通常它们安装在旧版本之上(.egg-info文件或目录除外)。你没有说明两个版本并排居住的原因,因为setup.py(或pip)不会将site-packages/my_module重命名为my_module_v1。我假设你改变了目录结构和.py文件名,足以使这两个版本可以共存在同一个父目录中,所以在IPython中,你可以运行from my_module import OldClassNamefrom my_module import NewClassName

+0

嗯,有趣。谢谢。 – cllamach 2014-09-15 12:36:47

相关问题