擅长:python、mysql、java
<p>在编写<code>sitecustomize.py</code>文件和更改<code>bin/python</code>这些都是可行的解决方案时,我建议使用另一种方法,这种方法不需要直接更改virutalenv中的内容,只需安装<code>.pth</code>文件即可:</p>
<pre><code>./venv/lib/python2.7/site-packages/_set_envs.pth
</code></pre>
<p>内容:</p>
<pre><code>import os; os.environ['FOO'] = 'bar'
</code></pre>
<p>测试:</p>
<pre><code>$ ./venv/bin/python -c "import os; print os.getenv('FOO')"
bar
</code></pre>
<p>诀窍是,python将加载每个<code>.pth</code>文件<a href="https://docs.python.org/2/library/site.html#module-site" rel="noreferrer">on startup</a>,如果有以<code>import</code>,<a href="https://github.com/python/cpython/blob/v2.7.15/Lib/site.py#L151-L153" rel="noreferrer">this line will be get executed</a>开头的行,则允许注入任意代码。</p>
<p>优点是,您可以简单地将python包编写到<a href="https://docs.python.org/2/library/site.html#module-site" rel="noreferrer">install this ^{<cd3>} file with setuptools</a>,安装到您想要更改的virtualenv。</p>