使用pip在virtualenv中安装软件包会导致软件包安装在全局site-packages文件夹中,而不是virtualenv文件夹中的软件包.以下是我在OS X Mavericks(10.9.1)上设置Python3和virtualenv的方法:
我使用Homebrew安装了python3:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl
Run Code Online (Sandbox Code Playgroud)
更改了pip3
.bash_profile中的变量; 添加以下行:
export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
运行virtualenv
返回$PATH
(重启shell后).
注意:.bash_profile
仍然会返回/ which python3
.
使用pip3安装virtualenv:
pip3 install virtualenv
Run Code Online (Sandbox Code Playgroud)
接下来,创建一个新的virtualenv并激活它:
virtualenv testpy3 -p python3
cd testpy3
source bin/activate
Run Code Online (Sandbox Code Playgroud)
注意:如果我没有指定-p python3,那么virtualenv中的bin文件夹中将缺少pip.
运行/usr/local/bin/python3
并which python3
返回virtualenv文件夹:
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在激活的virtualenv中使用pip安装例如Markdown时,pip将安装在全局site-packages文件夹中,而不是virtualenv的site-packages文件夹中.
pip install markdown
Run Code Online (Sandbox Code Playgroud)
运行usr/bin/python
回报:
Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)
Run Code Online (Sandbox Code Playgroud)
内容virtualenv
:
__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/
Run Code Online (Sandbox Code Playgroud)
内容pip3 …
我正在尝试使用linux crontab执行python脚本,但我找到了很多解决方案,但没有一个能够正常工作.例如:在/etc/cron.d编辑anacron或使用crontab -e.
我想每10分钟运行一次这个脚本.
我必须编辑哪个文件来配置它?
提前致谢
编辑
我把这一行放在文件的末尾,但它不会改变任何东西.我必须重新启动任何服务吗?
*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py
Run Code Online (Sandbox Code Playgroud)
编辑[2]
伙计们,我已经遵循了源代码.这里可能有问题,但是当我手动执行它时,它可以工作:
我设置我的 cronjob 在特定时间调用我的脚本(ex- 2 4 5 10 * python3 mayank/exp/test.py)。当我的test.py被调用时,我将在我的 test.py 脚本中激活 virtualenv,如下所示。
activate = "/home/myserver/schedule_py3/bin/activate_this.py"
exec(open(activate).read())
Run Code Online (Sandbox Code Playgroud)
激活虚拟环境(其中包含 python3 和运行脚本所需的包)后,我尝试导入请求,它显示的错误为:-
File "schedule_module/Schedule/notification_task.py", line 2, in <module>
import requests
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 43, in <module>
import urllib3
File "/usr/lib/python2.7/site-packages/urllib3/__init__.py", line 10, in <module>
from .connectionpool import (
File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 31, in <module>
from .connection import (
File "/usr/lib/python2.7/site-packages/urllib3/connection.py", line 45, in <module>
from .util.ssl_ import (
File "/usr/lib/python2.7/site-packages/urllib3/util/__init__.py", line 4, in <module>
from .request …
Run Code Online (Sandbox Code Playgroud) 通常我通过 SSH 连接到我的 EC2 实例并运行:
source MYVENV/bin/activate
如何设置我的 cronjob 以激活虚拟环境?我的 Django 脚本需要存储在 ~/.bash_profile 中的环境变量
我尝试按照此处的步骤操作无济于事
SHELL=/bin/bash
*/1 * * * * root source /home/ec2-user/MYVENV/activate && python /home/script.py
Run Code Online (Sandbox Code Playgroud)
这是我上面的当前设置。
我在日志中收到以下错误:
/bin/bash: root: 找不到命令
我在manage.py celery call myapp.tasks.mytask
使用我的用户crontab 调度时遇到问题,因为当cron尝试运行该作业时,它会在stderr中获取此信息(将其邮寄给我,如/var/mail/kal
)
Unknown command: 'celery'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)
相同的命令完全来自常规的bash登录shell,但它在crontab中不起作用.
我在Debian上这样做:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.0 (wheezy)
Release: 7.0
Codename: wheezy
Run Code Online (Sandbox Code Playgroud)
我已经在StackOverflow上阅读了许多类似的问题,并尝试了许多建议的解决方案.到目前为止,他们都没有为我工作过.以下是我到目前为止尝试过的解决方案:
首先,我确保在crontab中指定相关的环境变量:
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)
注意:这些在以下所有解决方案中都保持不变.
* * * * * /home/kal/.virtualenvs/foo_dev/bin/python /home/kal/foo/manage.py celery call myapp.tasks.mytask
Run Code Online (Sandbox Code Playgroud)
* * * * * cd /home/kal/foo && /home/kal/.virtualenvs/foo_dev/bin/python ./manage.py celery call myapp.tasks.mytask
Run Code Online (Sandbox Code Playgroud)
〜/ mytask.sh的内容:
#!/usr/bin/env bash
source /home/kal/.virtualenvs/foo_dev/bin/activate;
cd /home/kal/foo;
./manage.py celery …
Run Code Online (Sandbox Code Playgroud) python ×5
cron ×4
virtualenv ×2
django ×1
linux ×1
macos ×1
pip ×1
python-2.7 ×1
python-3.x ×1
urllib3 ×1