Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在ubuntu操作系统的virtualenv中安装psycopg2_Python_Django_Postgresql_Psycopg2 - Fatal编程技术网

Python 在ubuntu操作系统的virtualenv中安装psycopg2

Python 在ubuntu操作系统的virtualenv中安装psycopg2,python,django,postgresql,psycopg2,Python,Django,Postgresql,Psycopg2,我正在使用VirtualNV,并尝试设置postgresql。我的系统上安装了psycopg2,但我的虚拟环境似乎无法识别psycopg2。是否可以将系统范围的psycopg2文件复制到我的django项目目录中,或者这是一种不好的方法 这是django项目中my settings.py文件的相关部分 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2',

我正在使用VirtualNV,并尝试设置postgresql。我的系统上安装了psycopg2,但我的虚拟环境似乎无法识别psycopg2。是否可以将系统范围的psycopg2文件复制到我的django项目目录中,或者这是一种不好的方法

这是django项目中my settings.py文件的相关部分

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db' ,
    'USER': 'myusername' ,
    'PASSWORD': 'mypassword' ,
    'HOST': 'localhost' ,
    'PORT': '' ,

    }
}
运行
python manage.py migrate
时,出现以下错误:

    File "manage.py", line 10, in <module>
        execute_from_command_line(sys.argv)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
        utility.execute()
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
        django.setup()
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
        app_config.import_models(all_models)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/apps/config.py", line 197, in import_models
        self.models_module = import_module(models_module_name)
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/contrib/auth/models.py", line 40, in <module>
        class Permission(models.Model):
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/models/base.py", line 125, in __new__
        new_class.add_to_class('_meta', Options(meta, **kwargs))
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/models/base.py", line 300, in add_to_class
        value.contribute_to_class(cls, name)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/models/options.py", line 166, in contribute_to_class
        self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in __getattr__
        return getattr(connections[DEFAULT_DB_ALIAS], item)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/utils.py", line 242, in __getitem__
        backend = load_backend(db['ENGINE'])
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/utils.py", line 108, in load_backend
        return import_module('%s.base' % backend_name)
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/uwsgi-tutorial/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 27, in <module>
        raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
    django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

根据您的问题和您的一条评论,当您运行
sudo pip install psycopg2
时,它似乎正在使用系统安装,正如它在/usr/lib/python2.7/dist包中所指的psycopg2中所述,这与您尝试运行Django的环境不同

来自Django环境的权限错误可能是由于未使用
sudo
(除其他外,在psycopg2安装期间需要进行一些C编译,因此通常需要
sudo
,而其他许多软件包则不需要)

我建议您在运行
sudo
命令时显式地参考virtualenv安装的pip二进制文件


i、 e.:
sudo/bin/pip安装psycopg2

这是一个旧线程,但有些人可能会遇到
Python.h未找到
类型的错误,而pip在基于Ubuntu的系统上将psycopg2安装到virtualenv

通过在virtualenv内部运行
python-V
来检查您的virtualenv python版本。

假设它是Python 3.8.0,请尝试通过以下方式将libpython3.8-dev安装到您的系统中(而不是virtualenv):

其他版本可能采用类似的方法


这为我解决了问题。

您是否尝试过使用
pip安装psycopg2
在您的virtualenv中重新安装psycopg2?是的,我尝试过。我得到这个错误:异常:回溯(最后一次调用):文件“/uwsgi tutorial/local/lib/python2.7/site-packages/pip/basecommand.py”,第122行,主状态=self.run(选项,args)文件“/uwsgi tutorial/local/lib/python2.7/site-packages/pip/commands/install.py”,第278行,运行要求\u set.prepare\u文件(finder,force_root_egg_info=self.bundle,bundle=self.bundle)File“/uwsgi tutorial/local/lib/python2.7/site packages/pip/req.py”,第1153行,在prepare_files location=req_to_install.build_location(self.build_dir,而不是self.is_download)…当我安装psycopg2时,我得到以下要求:已经满足了(使用--upgrade进行升级):psycopg2 in/usr/lib/python2.7/dist-packages Cleaning up…当我再次尝试迁移时,仍然是相同的错误。很可能您的Postgres用户没有正确的权限。权限设置是否正确?您是否可以使用
设置中的同一用户登录
psql
?非常感谢,成功了!
Exception:
Traceback (most recent call last):
  File "/uwsgi-tutorial/local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/uwsgi-tutorial/local/lib/python2.7/site-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/uwsgi-tutorial/local/lib/python2.7/site-packages/pip/req.py", line 1153, in prepare_files
    location = req_to_install.build_location(self.build_dir, not self.is_download)
  File "/uwsgi-tutorial/local/lib/python2.7/site-packages/pip/req.py", line 218, in build_location
    _make_build_dir(build_dir)
  File "/uwsgi-tutorial/local/lib/python2.7/site-packages/pip/req.py", line 1527, in _make_build_dir
    os.makedirs(build_dir)
  File "/uwsgi-tutorial/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/uwsgi-tutorial/build'

Storing debug log for failure in /home/user/.pip/pip.log
sudo apt-get install libpython3.8-dev