标签: virtualenv

无法执行 gcc:没有那个文件或目录

我正在运行 Ubuntu LTS 并且在尝试执行我的一些 pip 安装内容时遇到错误,例如scrapy。这是我得到的错误:

Unable to execute gcc: No such file or directory
Error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

我正在 virtualenv 中安装 pip。我尝试使用以下命令安装 build Essentials,但仍然出现相同的错误:

apt-get -y install build-essential
Run Code Online (Sandbox Code Playgroud)

谁能帮我理解我哪里出错了?

编辑 - 更多信息:

ubuntu@ip-10-164-8-155:/var/log$ gcc -v
The program 'gcc' can be found in the following packages:
 * gcc
 * pentium-builder
Try: sudo apt-get install <selected package>
Run Code Online (Sandbox Code Playgroud)

linux ubuntu gcc virtualenv

39
推荐指数
1
解决办法
9万
查看次数

virtualenv 适合生产服务器吗?

我打算成立一个Python应用程序(Pyblosxom)我的服务器上,并考虑到其自身的运行它的virtualenv沙箱--no-site-packages。我希望这样的设置多年来可以轻松移植和维护。

但是,我只将 virtualenv 用于在本地重新创建某个服务器设置的开发环境,并且大多数关于 virtualenv 的来源似乎也提到了 virtualenv 用于这种用途。

从实时服务器上的 virtualenv 运行 Python 应用程序有什么缺点吗?

注意:至于设置的可移植性,我刚刚了解到--relocatable需要在新软件包安装后运行的实验选项。即使我没有这样做,我想由于 pip,设置会非常便携。

python virtualenv

15
推荐指数
1
解决办法
3980
查看次数

PIP 未安装到 virtualenv 目录

我正在尝试将 django 安装到已经存在的 virtualenv。

按照此处pip-install 网站上列出的说明,我从 SSH 运行以下命令。

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django
Run Code Online (Sandbox Code Playgroud)

但是在安装的底部,我看到了这个:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied
Run Code Online (Sandbox Code Playgroud)

看来它正在尝试将其安装到全局目录。我没有 sudo 权限。我在这里做错了吗?

更新: $PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

installation python packages virtualenv pip

12
推荐指数
1
解决办法
4万
查看次数

Systemd:启动时运行 Python 脚本 (virtualenv)

我有一个通常使用以下命令运行的 python 脚本:

(environment) python run.py
Run Code Online (Sandbox Code Playgroud)

我想在开始时运行这个脚本。(我正在使用 ubuntu)这是我的服务:

[Unit]
Description=My Script Service
After=multi-user.target

[Service]
Type=idle

ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我无法运行这个脚本,但我可以运行任何不在环境内部的脚本。如何在启动时运行 python 脚本(virtualenv)?

sudo systemctl status user_sent
? user_sent.service - Mail Service
Loaded: loaded (/lib/systemd/system/user_sent.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since xxxxx 16:30:20 MSK; 3s ago
Process: 3713 ExecStart=/usr/bin/python run.py (code=exited,   status=200/CHDIR)
Main PID: 3713 (code=exited, status=200/CHDIR)
Run Code Online (Sandbox Code Playgroud)

python daemon virtualenv systemd

11
推荐指数
1
解决办法
3万
查看次数

同一个uwsgiEmperor下的不同Python版本?

我正在运行一个带有各种 Vassals 的 uwsgi Emperor,每个 Vassals 都为来自不同 virtualenv 的特定 Python 应用程序提供服务。由于 uwsgi 是用它自己的 Python 2.7 解释器编译的,因此尝试在其中使用带有 Python 3 的 virtualenv 会在 vassal.log 中产生以下错误:

ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

我相信这个错误的根源是 uwsgi 使用的是它内置的 Python 2.7 解释器,而它运行的 virtualenv 目录只支持 Python 3 解释器。事实上,当我使用另一个 uwsgi(只需将它安装pip install uwsgi在同一个 virtualenv 中)时,错误就会消失。但是,我希望一个皇帝统治几个不同的 virtualenv,所以在每个虚拟环境中安装一个单独的 uwsgi 不是一种选择。

根据Stackoverflow 上的这个答案,解决这个问题的正确方法是使用不同的 Python 解释器编译 uwsgi 作为可加载模块。在我采用这种方法之前,我想知道如何配置我的 Vassals 以使用另一个解释器插件。

现在我有一个皇帝,它从我的 /etc/rc.local 启动,并具有以下设置:

[uwsgi]
uid = www-data
gid = www-data
master = true
emperor = /etc/uwsgi/vassals
daemonize = /var/log/uwsgi/emperor.log
Run Code Online (Sandbox Code Playgroud)

然后我有一堆 Vassals …

python virtualenv uwsgi

10
推荐指数
2
解决办法
1万
查看次数

在virtualenv中安装后django找不到psycopg2

我想将 postgresql 与 django 一起使用,因此执行了以下操作:

sudo apt-get install libpq-dev python-dev
sudo apt-get update
workon myenv
sudo pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

settings.py正确配置我之后,我运行

./manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

但是会抛出异常:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2
Run Code Online (Sandbox Code Playgroud)

数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'postgres',
        'PASSWORD': 'password1234',
        'HOST': 'localhost',
        'PORT': '',
    }
}
Run Code Online (Sandbox Code Playgroud)

postgresql django virtualenv

8
推荐指数
1
解决办法
3万
查看次数

Django + gunicorn + virtualenv + Supervisord 问题

我的 virtualenv + gunicorn 设置有一个奇怪的问题,只有当 gunicorn 通过 supervisord 启动时。我确实意识到这很可能是我的主管的问题,我将不胜感激任何有关寻求帮助的更好地方的反馈...

简而言之:当我从我的用户 shell 运行 gunicorn 时,在我的 virtualenv 中,一切都完美无缺。我能够访问我的 Django 项目的所有视图。

当系统启动时supervisord启动gunicorn时,一切正常。

但是,如果我必须终止 gunicorn_django 进程,或者如果我执行 supervisord 重新启动,一旦 gunicorn_django 重新启动,每个请求都会用奇怪的 Traceback 回答:

(...)
  File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/__init__.py", line 77, in
    connection = connections[DEFAULT_DB_ALIAS]
  File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/utils.py", line 50, in load_backend
    raise ImproperlyConfigured(error_msg)
TemplateSyntaxError: Caught ImproperlyConfigured while rendering: 'django.db.backends.postgresql_psycopg2' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3'
Error …
Run Code Online (Sandbox Code Playgroud)

python django virtualenv supervisord gunicorn

7
推荐指数
1
解决办法
5471
查看次数

“导入错误:没有名为烧瓶的模块”- 在 vi​​rtualenv 设置中出现 nginx + uWSGI + Flask 问题

我使用一个简单的 hello world 程序在 virtualenv 中的本地主机上运行了 nginx + uWSGI ,但是当我用一个简单的 Flask 应用程序替换 hello world 时出现此错误:

File "./wsgi_configuration_module.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask
unable to load app mountpoint
Run Code Online (Sandbox Code Playgroud)

这是烧瓶应用程序(wsgi_configuration_module.py):

from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "hello world"

if __name__ == "__main__":
    application.run()
Run Code Online (Sandbox Code Playgroud)

uWSGI 配置(app_conf.xml):

<uwsgi>
    <socket>127.0.0.1:9001</socket>
    <chdir>/srv/www/labs/application</chdir>
    <pythonpath>/srv/www</pythonpath>
    <module>wsgi_configuration_module</module>
    <callable>application</callable>
    <no-site>true</no-site>
</uwsgi>
Run Code Online (Sandbox Code Playgroud)

nginx配置:

server {
    listen   80;
    server_name localhost;
    access_log /srv/www/labs/logs/access.log;
    error_log /srv/www/labs/logs/error.log;

    location / { …
Run Code Online (Sandbox Code Playgroud)

nginx virtualenv uwsgi

6
推荐指数
1
解决办法
1万
查看次数

Ubuntu - Supervisord 和 virtualenv

我正在尝试从主管运行一系列 Python 应用程序。它在 Mac OSX 上运行良好,但是当我尝试在 Ubuntu 上运行相同的应用程序时,主管似乎没有激活 virtualenv,因此我的脚本抛出错误。

这是我的结构:

/home/user/Sites/my-site
- app.py
- venv
- supervisor.conf
Run Code Online (Sandbox Code Playgroud)

我的 supervisor.conf 文件如下所示:

[program:python-app]
autorestart = false
autostart = false
startsecs = 0
command = python app.py
startretries = 1
environment=PYTHONPATH="%(here)s"

[unix_http_server]
file = /tmp/supervisor.sock

[supervisord]
logfile = logs/supervisord.log
pidfile = logs/supervisord.pid
environment=PYTHONPATH="%(here)s"

[supervisorctl]
serverurl = unix:///tmp/supervisor.sock

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[unix_http_server]
username = supervisor_admin
password = 

[inet_http_server]
username = supervisor_admin
password = 
port = *:9001
Run Code Online (Sandbox Code Playgroud)

如何让主管在虚拟环境中运行 python 应用程序?

ubuntu python virtualenv supervisord

6
推荐指数
1
解决办法
2万
查看次数

uWSGI 和 python 虚拟环境

我正在尝试将 uWSGI 与虚拟环境一起使用,以便在其上使用 Trac 错误跟踪器。

我已经通过 pip 安装了系统范围的 uwsgi。

接下来,我在 virtualenv 中安装了 trac

$ virtualenv venv
$ . venv/bin/activate
$ pip install trac
Run Code Online (Sandbox Code Playgroud)

然后我编写了一个简单的 uWSGI 配置脚本:

[uwsgi]
master = true
processes = 1
socket = localhost:3032

home = /srv/http/trac/venv/
no-site = true

gid = www-data
uid = www-data
env = TRAC_ENV=/srv/http/trac/projects/my_project
module = trac.web.main:dispatch_request
Run Code Online (Sandbox Code Playgroud)

但是当我尝试启动它时,它失败了:

$ uwsgi --http :8000 --ini /etc/uwsgi/vassals-available/my_project.ini --gid www-data --uid www-data
...
Set PythonHome to /srv/http/trac/venv/
...
*** Operational MODE: single process ***
ImportError: No module …
Run Code Online (Sandbox Code Playgroud)

python virtualenv uwsgi

6
推荐指数
1
解决办法
2万
查看次数

如何在重启后立即在 bash 中启动 tmux

我创建了一个在 Ubuntu 实例重新启动时运行的脚本。

crontab -e
Run Code Online (Sandbox Code Playgroud)

然后将其添加到脚本中:

@reboot /home/ubuntu/startup.sh
Run Code Online (Sandbox Code Playgroud)

脚本如下所示:

#!/bin/bash
tmux new-session -d -s my_server
tmux send-keys -t my_server:0 ". /home/ubuntu/venv/bin/activate" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api" C-m
tmux send-keys -t my_server:0 "git checkout new-schema" C-m
tmux send-keys -t my_server:0 "git pull" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api/canonicaliser/workers" C-m
tmux send-keys -t my_server:0 "python person_worker.py" C-m
Run Code Online (Sandbox Code Playgroud)

重新启动后,我执行 atmux attach以查看结果。

$ . /home/ubuntu/venv/bin/activate
cd ~/canonicaliser_api
(venv)$ (venv)$ git checkout new-schema
git pull
cd ~/canonicaliser_api/canonicaliser/workers
python person_worker.py
Already …
Run Code Online (Sandbox Code Playgroud)

ubuntu bash virtualenv tmux

6
推荐指数
1
解决办法
3351
查看次数

在使用 VirtualEnv 时将 Celery 作为守护进程运行

我已经在我的 amazon linux 服务器上设置并测试了 celery,使用 mysql 作为消息后端,并且在直接运行程序时它工作正常。我的 python 项目和 celery 安装位于 virtualenv 中。但是,如果我尝试使用此处的脚本来守护 celery ,该程序将拒绝在后台运行。

我正在使用 CELERYD="/opt/apps/myenv/[celeryd 路径]" 将 celery 的 virtualenv 安装位置传递给配置文件中的守护程序,这等同于在启动 celeryd 时使用标志 --cmd。

脚本总是在启动工作节点 1 后停止并等待,就好像我是直接运行程序而不是对其进行守护程序一样。芹菜此时处于活动状态,但在我关闭终端窗口或按 ctrl-c 后停止。

我试过在没有 --cmd 的情况下运行它,它似乎在后台运行,但工作人员不会启动,并且调用 stop 会返回一个“未知实例”。

任何建议,将不胜感激。

python daemon virtualenv

5
推荐指数
0
解决办法
2423
查看次数

Jenkins 中使用 virtualenv 的每个作业环境

我正在尝试virtualenv以编程方式管理 Jenkins 服务器上每个作业的 Python 环境,通过共享库扩展实现,以根据每个作业激活环境。例如:

/vars/activateEnvironment.groovy:

def call(String env = "/usr/local/etc/environments/jenkins-$JOB_NAME") {

    sh """
    mkdir ${env}
    virtualenv ${env}
    source ${env}/bin/activate
    """
}
Run Code Online (Sandbox Code Playgroud)

管道脚本,其中virtualenv-scripts存储库包含上述文件:

@Library('virtualenv-scripts') _

pipeline {
    agent any
    stages {
        stage("Test") {
            steps {
                activateEnvironment()
                sh 'which pip'
                sh 'echo \$PATH'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行此管道脚本,我得到以下输出:

[Pipeline] sh
[example-pipeline] Running shell script
+ echo /sbin:/usr/sbin:/bin:/usr/bin
/sbin:/usr/sbin:/bin:/usr/bin
[Pipeline] sh
[example-pipeline] Running shell script
+ which pip
/bin/pip
Run Code Online (Sandbox Code Playgroud)

我尝试使用此答案使 Jenkins 使用登录 shell,但这仍然会在每次 …

python bash virtualenv jenkins

3
推荐指数
1
解决办法
4901
查看次数