2017-02-22 8 views
1

최근에 paramiko 코드를 실행하려고했지만 코드는 기본 ssh 포트를 만들고 코드는 다른 컴퓨터에서 사용할 수 있습니다. 그러나 paramiko를 설치하고 내 컴퓨터에서 코드를 실행하면 작동하지 않습니다. 코드가 동일한 지 다시 확인했습니다. 컴파일 할 때 다음 나는 오류를 확인, 그것은 말한다 :paramiko 패키지 1.4.1에서 설치 오류가 발생했습니다.

import paramiko 
    File "/Library/Python/2.7/site-packages/paramiko/__init__.py", line 30, in <module> 
    from paramiko.transport import SecurityOptions, Transport 
    File "/Library/Python/2.7/site-packages/paramiko/transport.py", line 33, in <module> 
    from cryptography.hazmat.backends import default_backend 
    File "/Library/Python/2.7/site-packages/cryptography/hazmat/backends/__init__.py", line 7, in <module> 
    import pkg_resources 
    File "/Library/Python/2.7/site-packages/pkg_resources/__init__.py", line 72, in <module> 
    import packaging.requirements 
    File "/Library/Python/2.7/site-packages/packaging/requirements.py", line 59, in <module> 
    MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") 
    TypeError: __call__() takes exactly 2 arguments (1 given) 

내가 답을 온라인에서 탐색했습니다과 내가 가질 수있는 가능한 문제는 내가 암호화 1.4.1 패키지를 필요가 없다는 것입니다 말했다. 따라서 pip를 사용하여 패키지를 설치하고 어떤 이유로 프로그램을 실행하는 것과 동일한 오류가 발생했습니다.

pip install crypto 
Collecting crypto 
    Using cached crypto-1.4.1-py2.py3-none-any.whl 
Collecting shellescape (from crypto) 
    Using cached shellescape-3.4.1-py2.py3-none-any.whl 
Collecting Naked (from crypto) 
    Using cached Naked-0.1.31-py2.py3-none-any.whl 
Collecting requests (from Naked->crypto) 
    Using cached requests-2.13.0-py2.py3-none-any.whl 
Collecting pyyaml (from Naked->crypto) 
    Using cached PyYAML-3.12.tar.gz 
Exception: 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main 
    status = self.run(options, args) 
    File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 335, in run 
    wb.build(autobuilding=True) 
    File "/Library/Python/2.7/site-packages/pip/wheel.py", line 749, in build 
    self.requirement_set.prepare_files(self.finder) 
    File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 380, in prepare_files 
    ignore_dependencies=self.ignore_dependencies)) 
    File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 634, in _prepare_file 
    abstract_dist.prep_for_dist() 
    File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 129, in prep_for_dist 
    self.req_to_install.run_egg_info() 
    File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 412, in run_egg_info 
    self.setup_py, self.name, 
    File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 387, in setup_py 
    import setuptools # noqa 
    File "/Library/Python/2.7/site-packages/setuptools/__init__.py", line 12, in <module> 
    import setuptools.version 
    File "/Library/Python/2.7/site-packages/setuptools/version.py", line 1, in <module> 
    import pkg_resources 
    File "/Library/Python/2.7/site-packages/pkg_resources/__init__.py", line 72, in <module> 
    import packaging.requirements 
    File "/Library/Python/2.7/site-packages/packaging/requirements.py", line 59, in <module> 
    MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") 
TypeError: __call__() takes exactly 2 arguments (1 given) 

그렇다면 내 컴퓨터에서 어떤 일이 벌어지고 있는지 알 수 있습니까? 암호를 설치하기 전에 설치해야하는 다른 패키지가 있습니까?

나는 현재 맥 OS Y 요세미티를 사용하고 있는데 내 핍이 업그레이드됩니다.

************************* 갱신 ******************** *********

이 원래 코드 :

import threading 
import paramiko 
import subprocess 

def ssh_command(ip,user,passwd,command): 
    client = paramiko.SSHClient() 
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    client.connect(ip,username = user, password = passwd) 
    ssh_session = client.get_transport().open_session() 
    if ssh_session.active: 
     ssh_session.exec_command(command) 
     print ssh_session.recv(1024) 
    return 

ssh_command('192.168.100.301','GLZ','TripleBody','id') 

희망이 도움이됩니다!

또한 버전 문제에 대해서는 pycrypto (버전 2.6.1)를 설치하기 위해 pip를 사용해 보았는데 동일한 오류가 발생합니다. 사전에 큰 도움과 인내, 피터

+0

최신 버전의 암호화를 설치해 보셨습니까? 당신은 또한 코드를 제공 할 수 2.6.1 – haifzhan

+0

입니까? – progNewbie

+0

난 그냥 문제를 편집 희망이 내 대답은 당신이 나에게 upvote에주는 줄래 도움이된다면 ~ – PetaGlz

답변

0

에 대한

감사합니다 안녕하세요 저도 같은 문제가있어. 나는 다음과 같은 명령을 시도하고 작동한다! (https://bugs.centos.org/view.php?id=12722&history=1에서 ptmcg 씨) 패키징 모듈 requirements.py에

이 라인 :

MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") 

은 "의 구체적 사용 2.0.2 대한 파싱에서 도입 된 특징을 사용하여 expr() "을 사용하여 표현식을 복사합니다 (이 경우"MARKER_EXPR() "). 2.1.10 (최신 버전) 대한 파싱로 업그레이드 권장되는 작업 과정이지만,이 또한에 requirements.py의 코드를 변경하여 해결할 수 있습니다 :

MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker") 

(이 라인에서 실제로 필요하지 않습니다 MARKER_EXPR 사본을 만드십시오.)

+0

안녕하세요 PetaGlz .. 도움이 될 것입니다? 감사! – mopkaloppt

+0

죄송합니다 선생님, 내가 스택 오버 플로우 꽤 익숙하지 그리고 난 진짜 자주 내 계정을 확인하지 않았다. 내가 너에게 업보트를 줄려고 할 때, 나는 그것을 할 수 없다고 말했다. 다시 그 점을 유감스럽게 생각한다. – PetaGlz