gpt4 book ai didi

python - Virtualenv 中的导入错误

转载 作者:行者123 更新时间:2023-12-01 05:55:16 24 4
gpt4 key购买 nike

我正在尝试在运行 Flask + sqlalchemy (mysql) 的 Linode 实例上运行 python setup.py 一个小脚本。

#filename - setup.py
from daaru import db

def init_db():
db.drop_all()
db.create_all()

init_db()

这是我遇到的错误 -

Traceback (most recent call last):
File "setup.py", line 21, in <module>
init_db()
File "setup.py", line 9, in init_db
db.drop_all()
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/flask_sqlalchemy.py", line 830, in drop_all
self._execute_for_all_tables(app, bind, 'drop_all')
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/flask_sqlalchemy.py", line 814, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/flask_sqlalchemy.py", line 763, in get_engine
return connector.get_engine()
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/flask_sqlalchemy.py", line 443, in get_engine
self._engine = rv = sqlalchemy.create_engine(info, **options)
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 338, in create_engine
return strategy.create(*args, **kwargs)
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 64, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/home/captain/public/daaru/v1/local/lib/python2.7/site-packages/sqlalchemy/connectors/mysqldb.py", line 52, in dbapi
return __import__('MySQLdb')
ImportError: No module named MySQLdb

有趣的是,当我登录服务器、激活虚拟环境(名为 v1)并在 ipython 中运行 init_db 时,一切都会按预期工作。但是当我将其作为脚本运行时,它会为名为 MySQLdb 的模块提供一个 ImportError 。 MySQLdb 使用 apt-get install python-mysqldb 进行系统范围的安装,因为该软件包无法通过 pip 获得。

我在这里做错了什么?

在服务器上运行 pip freeze 会显示以下内容:

Flask==0.9
Flask-SQLAlchemy==0.16
Jinja2==2.6
SQLAlchemy==0.7.9
Werkzeug==0.8.3
argparse==1.2.1
wsgiref==0.1.2

错误是因为venv中没有找到mysqldb包吗?那么为什么不使用该软件包的系统范围安装呢?

最佳答案

我用了this在我的 venv 中安装 mysql-python 的博客文章。现在一切都很顺利。谢谢。我还添加了一个 fabfile 来自动部署 -

from fabric.api import *

env.user = "host"
env.hosts = ["hostname"]
env.directory = "/home/captain/public/daaru"
env.activate = "source /home/captain/public/daaru/v1/bin/activate"

def deploy():
with cd(env.directory):
run("git pull")
run("sudo service apache2 reload")

def virtualenv(command):
with cd(env.directory), prefix(env.activate):
run(command)

def populate_db():
virtualenv("python setup.py")

def freeze():
""" command for testing virtualenv """
virtualenv("pip freeze")

关于python - Virtualenv 中的导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com