1

Ubuntu 16.04 LTS • nginx 1.10.0 • Python 2.7.12 • Django-1.10.5

我已经完成了https://docs.djangoproject.com/en/1.10/intro/tutorial07/上的教程,这些教程都是使用 virtualenv 构建的

为了学习打包我的应用程序并重用它,我正在关注https://docs.djangoproject.com/en/1.10/intro/reusable-apps/上的教程,它不使用 virtualenv,但我无法得到它上班

该应用程序称为“民意调查”。这是我为创建包所做的:

  1. 删除了我的应用程序中留下的所有 .pyc 文件

  2. pip install setuptools & sudo pip install django

  3. 将我的(正常运行的)应用程序目录从项目目录移动到我的主目录

    ~$ mv -rfp 示例/民意调查 django-polls

  4. 在新的“django-polls”文件夹中,我创建了README.rstLICENSE并修改了setup.py,由

注释掉:

\#'Programming Language :: Python :: 3',
\#'Programming Language :: Python :: 3.4',
\#'Programming Language :: Python :: 3.5',
  1. 创建MANIFEST.in(无文档)

  2. 构建包,没有问题:python setup.py sdist

到目前为止,一切似乎都正常工作。

我想在其他站点重新使用我的应用程序,但安装后无法完成迁移。

我安装了没有明显问题的新软件包:

pip install --user django-polls/dist/django-polls-0.1.tar.gz

为了完成安装,我:

  1. 在不同的站点/项目文件夹中的 settings.py中将“投票”添加到 INSTALLED_APPS

  2. 通过添加修改urls.py

    url(r'^polls/', 包括('polls.urls')),

  3. python manage.py 迁移

现在我得到一个错误:

File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named polls

我想:也许是因为我用 --user 标志安装了民意调查,它对 virtualenv 不可用,所以我“工作”了 virtualenv 并重新安装民意调查:

pip install django-polls/dist/django-polls-0.1.tar.gz

一切正常,但是当我尝试迁移时遇到同样的错误:

File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named polls

所以,我无法让我的应用程序在 virtualenv 中工作。

要获取民意调查的路径,我输入:

pip uninstall polls

并得到“无法卸载需求投票,未安装”

如果我在 virtualenv 中或者我已停用它,结果是相同的。

为了检查安装位置,我尝试使用和不使用 virtualenv 重新安装应用程序并获得:

Requirement already satisfied: pip in ./.local/lib/python2.7/site-packages

Requirement already satisfied: pip in ./Env/myenvironment/lib/python2.7/site-packages

因此,该应用程序安装在 virtualenv 内部和外部,但是当我进行迁移时它都丢失了。

我花了一整天的时间尝试各种路径和其他类似教程,但无法超越这一点。

4

1 回答 1

1

当我根据教程创建应用程序时,我将所有工作应用程序文件移动到新的应用程序文件夹中,而不是将它们保存在它们的文件夹中(上述问题中的~$ mv -rfp example/polls django-polls)。

换句话说,我已经移动了以下内容:

~/sitename/polls

直接到:

~/django-polls

当我应该把它移到:

~/django-polls/polls

这是错误的,我需要将所有内容保存在文件夹中:

~$ cd ~/django-polls
~$ mv -f ../sitename/polls ./

最后,为了让应用程序工作,我需要在 virtualenv 中工作时安装应用程序,没有 --user 标志。

于 2017-01-19T10:42:46.387 回答