virtualenv python中的预期行为是什么?

时间:2017-05-29 11:45:52

标签: python virtualenv setup.py data-files

这是我的问题,我正在尝试创建一个在设置过程中复制数据文件的应用程序。当我正在进行pip安装时,安装程​​序会将一些文件复制到目录中。

现在我的问题是,当在虚拟环境中时,客户期望的行为是什么 - 他是否希望每个virtualenv在虚拟环境目录中创建所有数据文件,或者将所有文件复制到虚拟环境目录之外的公共目录中。

在运行应用程序时,将会有新文件,这些文件将沿着这些复制的文件创建和存储。什么是python virtualenv所期望的理想行为。共同的还是孤立的?

2 个答案:

答案 0 :(得分:0)

virtualenv更适合开发,而不是部署。有许多方案可以部署Python应用程序。但是如果你喜欢virtualenv用法并且你有共同的文件,它们可以在任何地方恕我直言,因为virtualenv不是真正的隔离,它只是Python路径修改/修改机制(不像" chroot"),所以你决定在哪里放置你的公共文件,甚至是/usr/share/my-app-1.0/datafiles/。此外,virtualenv用于隔离二进制文件/脚本,但如果数据文件是静态的,您可以根据需要放置它们。

答案 1 :(得分:0)

在我看来,这取决于您创建的应用程序。 Virtualenv只是在同一台机器上运行具有不同依赖关系的多个应用程序。来自应用程序的数据是另一回事。

当我编写Web应用程序时,这将是服务器上的单个应用程序,然后我将使用一个目录。

另一方面,当我编写GUI应用程序时,情况会有所不同。如果数据是必须随每个版本更改的内容,但最终用户不直接触摸它(例如一些词典,翻译等),我会将其放在应用程序包中的dist-packages中(请参阅package data in setup.py)。 另一方面,如果用户能够触摸"并使用这些文件,然后我会把它们放在用户主目录中。见How to find the real user home directory using python?