回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我目前正在通过<a href="http://goo.gl/0Dw0ZQ" rel="nofollow noreferrer">these steps</a>安装我的第一个数字海洋服务器,它使用的是Ubuntu14x32和Django1.7,使用Python3.4。我对Ubuntu和digitialocean都是新手,尽管我多年前在Unix上开发过。在</p>
<p>我在运行<code>syncdb</code>时遇到了Postgres和Django的问题。在</p>
<hr/>
<p>(注意:我用<code>-p /usr/bin/python3.4</code>安装了我的virtualenv,这与指示的不同。我不知道这是否有区别。)</p>
<hr/>
<p>在步骤8中,它说要用</p>
<pre><code>pip install psycopg2
</code></pre>
<p>如<a href="https://askubuntu.com/questions/507320/starting-with-ubuntu-in-digitalocean-pip-failing-with-permission-denied">this question</a>中所述,必须更改为</p>
^{pr2}$
<p>但它失败了</p>
<pre><code>./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
</code></pre>
<p>全输出:</p>
<pre><code>(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
</code></pre>
<p>我最终决定这样做,这是可行的:</p>
<pre><code>sudo apt-get install python-psycopg2
</code></pre>
<p>然后它说要在<code>settings.py</code>中配置Django<code>DATABASE</code>变量,以</p>
<pre><code>"'ENGINE': 'django.db.backends.postgresql_psycopg2',"
</code></pre>
<p>然后跑</p>
<pre><code>python manange.py syncdb
</code></pre>
<p><code>syncdb</code>失败,错误为</p>
<p><code>django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'</code></p>
<p>全输出:</p>
<pre><code>(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$
</code></pre>
<p>我确认此文件存在,它与<code>DATABASE</code>值匹配:</p>
<p><code>/home/jeffy/django_files/django_test_venv/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2</code></p>
<p>(重复一遍:我用<code>-p /usr/bin/python3.4</code>安装了我的virtualenv,这与指示的不同,尽管我不知道这是否有区别。)</p>