Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 结构导入错误:无法导入名称';isMappingType'; 我遇到了“导入恐怖:不能导入名称”ISMAPPIGIN类型“在过程中为一个Django项目部署FabFILE。_Python_Django_Fabric - Fatal编程技术网

Python 结构导入错误:无法导入名称';isMappingType'; 我遇到了“导入恐怖:不能导入名称”ISMAPPIGIN类型“在过程中为一个Django项目部署FabFILE。

Python 结构导入错误:无法导入名称';isMappingType'; 我遇到了“导入恐怖:不能导入名称”ISMAPPIGIN类型“在过程中为一个Django项目部署FabFILE。,python,django,fabric,Python,Django,Fabric,1.以下是my fabfile.py的结构 from __future__ import with_statement from fabric.api import * from fabric.contrib.console import confirm from fabric.contrib.files import append, exists, sed env.hosts = ["127.0.0.1"] env.user = raw_input('Please enter user:'

1.以下是my fabfile.py的结构

from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm
from fabric.contrib.files import append, exists, sed

env.hosts = ["127.0.0.1"]

env.user = raw_input('Please enter user:')

def deploy():
      sudo("apt-get update -y")
sudo("apt-get install git -y")
sudo("apt-get install postgresql libpq-dev python-dev python-pip -y")

code_dir = 'backend-directory'

if exists(code_dir):
   run('cd %s && git pull' % (code_dir,)) 
else:
   run("git clone git://serveraddress/projects/backend-directory")


with cd(code_dir):
  sudo("pip install virtualenv")
  run("virtualenv -p /usr/bin/python3.4 venv")
  run("source venv/bin/activate")
  #sudo("pip install -r requirements/dev.txt")
  sudo("pip install -r requirements/production.txt")

  with settings(warn_only=True):
    with settings(sudo_user = 'postgres'):
        sudo("psql -c " + '"CREATE USER new_user WITH PASSWORD ' + "'new_password';" + '"')
        sudo("psql -c 'ALTER USER new_user CREATEDB;'")
        sudo("psql -c 'CREATE DATABASE newdb;'")
        sudo("psql -c 'GRANT ALL PRIVILEGES ON DATABASE 'newdb' to new_user;'")

    if run("nginx -v").failed:
        sudo(" apt-get install nginx -y")

code_dir = 'frontend-directory' 

if exists(code_dir):
   run('cd %s && git pull' % (code_dir,)) 
else:
   run("git clone git://serveraddress/frontend-directory")


code_dir = 'backend-directory/project_site'

with cd(code_dir):

    run("python manage.py makemigrations --settings=project.settings.development")
    run("python manage.py migrate --settings=project.settings.development")
    sudo("/etc/init.d/nginx start")

    with settings(warn_only=True):
      if run("find /etc/uwsgi").failed:
          sudo("mkdir /etc/uwsgi")
      if run("find /etc/uwsgi/vassals").failed:
          sudo("mkdir /etc/uwsgi/vassals")
      if run("find /etc/uwsgi/vassals/pam_uwsgi.ini").failed:
          sudo("ln -s ~/backend-direcoty/project_site/pam_uwsgi.ini /etc/uwsgi/vassals/") 

    run("uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data")
接下来,我在virtualenv中执行了下面的命令

(venv)praneeth@praneeth-Latitude-E6400 ~/wru-pam $ fab deploy
我得到了以下回溯:-

Traceback (most recent call last):
  File "/home/praneeth/wru-pam/venv/bin/fab", line 9, in <module>
    load_entry_point('Fabric==1.10.1', 'console_scripts', 'fab')()
  File "/home/praneeth/wru-pam/venv/lib/python3.4/site-packages/pkg_resources/__init__.py", line 474, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/praneeth/wru-pam/venv/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2582, in load_entry_point
    return ep.load()
  File "/home/praneeth/wru-pam/venv/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2265, in load
    return self._load()
  File "/home/praneeth/wru-pam/venv/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2268, in _load
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/praneeth/wru-pam/venv/lib/python3.4/site-packages/fabric/main.py", line 12, in <module>
    from operator import isMappingType
ImportError: cannot import name 'isMappingType'
回溯(最近一次呼叫最后一次):
文件“/home/praneth/wru pam/venv/bin/fab”,第9行,在
加载入口点('Fabric==1.10.1','console\u scripts','fab')()
文件“/home/praneth/wru-pam/venv/lib/python3.4/site-packages/pkg_-resources/__-init___;.py”,第474行,加载入口点
返回获取分布(dist)。加载入口点(组、名称)
文件“/home/praneth/wru-pam/venv/lib/python3.4/site-packages/pkg_-resources/__-init___;.py”,第2582行,加载入口点
返回ep.load()
文件“/home/praneth/wru-pam/venv/lib/python3.4/site-packages/pkg_-resources/_-init__.py”,第2265行,已加载
返回自我。_加载()
文件“/home/praneth/wru-pam/venv/lib/python3.4/site-packages/pkg_-resources/_-init__.py”,第2268行,加载
module=\uuuu导入(self.module\u name,fromlist=[''\uuuu name\uuuuuuu'],级别=0)
文件“/home/praneth/wru-pam/venv/lib/python3.4/site-packages/fabric/main.py”,第12行,在
从运算符导入isMappingType
ImportError:无法导入名称“isMappingType”
此导入错误的原因可能是什么?

Fabric是一个Python(2.5-2.7)库和用于 简化SSH在应用程序部署或系统中的使用 管理任务

另请参见以下内容中的其他要点和解决方法:

<>从我所理解的,迁移到第一个要考虑的事情。


演示问题的快速测试:

$ python2.7
>>> from operator import isMappingType
>>>

$ python3.4
>>> from operator import isMappingType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'isMappingType'
$python2.7
>>>从运算符导入isMappingType
>>>
$python3.4
>>>从运算符导入isMappingType
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:无法导入名称“isMappingType”

在发布结构的Python3实现之前,您还可以使用任何可用的fork

其中一个在与Python 3兼容的
fabric3
pip包中提供:

使用
pip Install fabric3
pip3 Install fabric3

以下问题的其中一个答案也提到了这一点:


我个人在Pelican博客中使用了它,该博客使用fabric来构建或服务网站。现在它工作得完美无缺。

python2:pip安装结构 python3:pip安装fabric3

我就是这样修复的, 移除蟒蛇3

sudo apt-get remove 'python3.*'
使用以下方法安装结构:

pip install fabric
sudo apt-get install fabric
我在之后运行
fab polish
时出现此错误:

zsh:/usr/local/bin/fab:bad解释器:/usr/bin/python3:没有这样的文件或目录

在vim中以sudo的身份打开
/usr/local/bin/fab
,并更改第一行,即
#/usr/bin/python3
#/usr/bin/python2.7


保存并运行fab polish。现在一切都好了

您是否建议停用我的virtualenvironment(即Python3.x)并运行命令$fab deploy simiply停用virtualenvironment(即Python3.x版本),它现在看起来很平滑thanks@Praneeth是的,要么你继续在
python2.x
上使用
fabric
,或者在
python3.x
上移动到
invoke
。谢谢。请注意,fabric3是一个非官方的分支,如果不是现在,可能很快就会被放弃。因为这个答案是写出来的,fabric2发布了,它与fabric1有很大的不同,迁移也不是很直接,但它确实是一个改进,并且它支持python3