蟒蛇manage.py执行syncdb失败,\“ImproperlyConfigured:没有名为‘

2019-10-20 15:18发布

我目前正在经历这些步骤来安装我的第一个数字海洋服务器,使用Ubuntu 14 X32和Django的1.7,使用Python 3.4。 我是新来的两个Ubuntu和Digitial海洋,虽然我几年前在Unix开发。

我在使用的Postgres和Django的一个问题,运行时syncdb


(注:我已经安装了我的virtualenv中-p /usr/bin/python3.4 ,这比指示不同的,我不知道这是否有差别。)


在步骤8,它说安装psycopg2

pip install psycopg2

其中,在描述这个问题 ,必须改变以

sudo /home/jeffy/django_files/django_test_venv/bin/pip install psycopg2

但它失败

./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory

全输出:

(django_test_venv)jeffy@originaldjangster:~/django_files/django_test_venv/bin$ sudo /home/jeffy/django_files/django_test_venv/bin/pip install psycopg2
Downloading/unpacking psycopg2
  Downloading psycopg2-2.5.3.tar.gz (690kB): 690kB downloaded
  Running setup.py (path:/home/jeffy/django_files/django_test_venv/build/psycopg2/setup.py) egg_info for package psycopg2

Installing collected packages: psycopg2
  Running setup.py install for psycopg2
    Skipping implicit fixer: buffer
    Skipping implicit fixer: idioms
    Skipping implicit fixer: set_literal
    Skipping implicit fixer: ws_comma
    building 'psycopg2._psycopg' extension
    i686-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.3 (dt dec pq3 ext)" -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -DPG_VERSION_HEX=0x090304 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/usr/include/python3.4m -I/home/jeffy/django_files/django_test_venv/include/python3.4m -I. -I/usr/include/postgresql -I/usr/include/postgresql/9.3/server -c psycopg/psycopgmodule.c -o build/temp.linux-i686-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement
    In file included from psycopg/psycopgmodule.c:27:0:
    ./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
     #include <Python.h>
                        ^
    compilation terminated.
    error: command 'i686-linux-gnu-gcc' failed with exit status 1
    Complete output from command /home/jeffy/django_files/django_test_venv/bin/python3.4 -c "import setuptools, tokenize;__file__='/home/jeffy/django_files/django_test_venv/build/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-jilc5e_m-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/jeffy/django_files/django_test_venv/include/site/python3.4:
    running install
running build
running build_py
creating build
creating build/lib.linux-i686-3.4
creating build/lib.linux-i686-3.4/psycopg2
copying lib/_range.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/extras.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/pool.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/extensions.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/errorcodes.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/psycopg1.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/__init__.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/_json.py -> build/lib.linux-i686-3.4/psycopg2
copying lib/tz.py -> build/lib.linux-i686-3.4/psycopg2
creating build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_dates.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_lobject.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_extras_dictcursor.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_transaction.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_green.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_psycopg2_dbapi20.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_bug_gc.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_bugX000.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_notify.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/dbapi20_tpc.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_types_basic.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/testconfig.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_with.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_quote.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_copy.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_module.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_types_extras.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/dbapi20.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_connection.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_async.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/__init__.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_cursor.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/testutils.py -> build/lib.linux-i686-3.4/psycopg2/tests
copying tests/test_cancel.py -> build/lib.linux-i686-3.4/psycopg2/tests
Skipping implicit fixer: buffer
Skipping implicit fixer: idioms
Skipping implicit fixer: set_literal
Skipping implicit fixer: ws_comma
running build_ext
building 'psycopg2._psycopg' extension
creating build/temp.linux-i686-3.4
creating build/temp.linux-i686-3.4/psycopg
i686-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.3 (dt dec pq3 ext)" -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -DPG_VERSION_HEX=0x090304 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/usr/include/python3.4m -I/home/jeffy/django_files/django_test_venv/include/python3.4m -I. -I/usr/include/postgresql -I/usr/include/postgresql/9.3/server -c psycopg/psycopgmodule.c -o build/temp.linux-i686-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement
In file included from psycopg/psycopgmodule.c:27:0:
./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
 #include <Python.h>
                    ^
compilation terminated.
error: command 'i686-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /home/jeffy/django_files/django_test_venv/bin/python3.4 -c "import setuptools, tokenize;__file__='/home/jeffy/django_files/django_test_venv/build/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-jilc5e_m-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/jeffy/django_files/django_test_venv/include/site/python3.4 failed with error code 1 in /home/jeffy/django_files/django_test_venv/build/psycopg2
Storing debug log for failure in /home/jeffy/.pip/pip.log

我终于看中了这一点,这工作:

sudo apt-get install python-psycopg2

然后它说配置Django的DATABASE变量,在settings.py ,以

"'ENGINE': 'django.db.backends.postgresql_psycopg2',"

然后运行

python manange.py syncdb

syncdb与失败

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'

全输出:

(django_test_venv)jeffy@originaldjangster:~/django_files/django_test$ python manage.py syncdb
Traceback (most recent call last):
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 23, in <module>
    import psycopg2 as Database
ImportError: No module named 'psycopg2'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/apps/config.py", line 197, in import_models
    self.models_module = import_module(models_module_name)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2231, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1448, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/contrib/auth/models.py", line 40, in <module>
    class Permission(models.Model):
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/models/base.py", line 125, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/models/base.py", line 300, in add_to_class
    value.contribute_to_class(cls, name)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/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 "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/__init__.py", line 40, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/utils.py", line 242, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/utils.py", line 108, in load_backend
    return import_module('%s.base' % backend_name)
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2231, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1448, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "/home/jeffy/django_files/django_test_venv/lib/python3.4/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'
(django_test_venv)jeffy@originaldjangster:~/django_files/django_test$

我证实该文件存在,其匹配DATABASE值:

/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2

(重复自己:我安装我用的virtualenv -p /usr/bin/python3.4 ,这比指示不同的,虽然我不知道这是否有差别。)

Answer 1:

在你的系统中安装python3x-dev的和的libpq-dev的前你的virtualenv安装psycopg2。

apt-get install python3.4-dev libpq-dev

然后在您的virtualenv

pip install psycopg2


Answer 2:

作为建议这个答案 ,我试图同时导入psycopg2然后postgresql_psycopg2在IPython中。 这两个返回ImportError

我看到PYTHONPATH是空的,所以我将它设置为上述目录

(django_test_venv)jeffy@originaldjangster:~/django_files/django_test$ echo $PYTHONPATH

(django_test_venv)jeffy@originaldjangster:~/django_files/django_test$ export PYTHONPATH=/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages

但同样,这两个包导致的ImportError的IPython的。 正如这个答案 (同样的问题),我跑

sudo apt-get build-dep python-psycopg2

(试图syncdb这里失败了同样的方式。)

然后( 根据需要调整 ,这是在问题-讯息中提到)

sudo /home/jeffy/django_files/django_test_venv/bin/pip install psycopg2

现在

python manage.py syncdb

作品。



Answer 3:

老话题,但可能是有用的人,只是有同样的问题:没有psycopg2 Postgres的使用Python 3.X

有同样的问题,有点挖后,这解决了我的问题:

https://pypi.org/project/psycopg2-binary/

pip install psycopg2-binary


文章来源: python manage.py syncdb fails with \"ImproperlyConfigured: No module named 'psycopg2'