
パッケージをインストールしようとしているときに、Ubuntu 14.04 Linux でこのコマンドを実行しました。
export PYTHONPATH=/usr/local/lib/python2.7/ && sudo python setup.py install
インストールしようとしていたパッケージはhttp://github.com/ewels/MultiQC
その後、Python 関連の多くのことがおかしくなりました。たとえば、virtualenv は動作しなくなり、このパッケージも動作しません。
http://wiki.dnanexus.com/images/files/dx-toolkit-v0.240.1-ubuntu-14.04-amd64.tar.gz
source Downloads/dx-toolkit/environment
dx login
Traceback (most recent call last):
File "/home/avilella/Downloads/dx-toolkit/bin/dx", line 7, in <module>
from dxpy.scripts.dx import main
File "/home/avilella/Downloads/dx-toolkit/share/dnanexus/lib/python2.7/site-packages/dxpy/__init__.py", line 143, in <module>
from . import exceptions
File "/home/avilella/Downloads/dx-toolkit/share/dnanexus/lib/python2.7/site-packages/dxpy/exceptions.py", line 211, in <module>
network_exceptions = (requests.packages.urllib3.exceptions.ProtocolError,
AttributeError: 'module' object has no attribute 'packages'
このコマンドラインを実行する前の段階に戻すにはどうすればよいですか? 新しい bash ターミナルから開始しても、他の Python ライブラリが見つかりません。同じコンピューターに新しく作成された Linux ユーザーでも、エラーは同じです。
関連する質問には回答がありませんでした:壊れた PYTHONPATH 環境変数を修正する
[編集]
以前のフォルダリストに戻す方法はわかりませんが、/usr/lib/python2.7と/usr/local/lib/python2.7の組み合わせだったと思います。
virtualenv を試しても失敗します:
virtualenv
Fatal Python error: Py_Initialize: Unable to get the locale encoding
File "/usr/lib/python2.7/encodings/__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Aborted (core dumped)
インタラクティブ Python は、私が試した範囲では以下のように動作します。
avilella@ubuntu14:~$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "foo"
foo
>>> import urllib3
>>>
私は今、フォルダを調べて、次pip install
のapt-get install python-${package}
ように両方を試しました:
ls /usr/local/lib/python2.7/dist-packages/*/ | grep -v egg | grep '\:' | tr ':' ' ' | grep -v dist-info | xargs -n1 basename | while read i; do sudo pip install $i; done
また:
ls /usr/local/lib/python2.7/dist-packages/*/ | grep -v egg | grep '\:' | tr ':' ' ' | grep -v dist-info | xargs -n1 basename | while read i; do sudo apt-get install -y python-${i}; done
しかし、依然として同じ問題が残っています。
パッケージリクエストは次の場所にあります:
ls -l /usr/lib/python2.7/dist-packages/requests/
total 304
-rw-r--r-- 1 root root 14594 Mar 26 2015 adapters.py
-rw-rw-r-- 1 root root 13750 Sep 4 16:05 adapters.pyc
-rw-r--r-- 1 root root 4333 Sep 24 2013 api.py
-rw-rw-r-- 1 root root 5261 Sep 4 16:05 api.pyc
-rw-r--r-- 1 root root 6173 Dec 5 2013 auth.py
-rw-rw-r-- 1 root root 7206 Sep 4 16:05 auth.pyc
-rw-r--r-- 1 root root 527 Mar 26 2015 certs.py
-rw-rw-r-- 1 root root 736 Sep 4 16:05 certs.pyc
-rw-r--r-- 1 root root 2531 Mar 26 2015 compat.py
-rw-rw-r-- 1 root root 2541 Sep 4 16:05 compat.pyc
-rw-r--r-- 1 root root 16686 Jan 8 2014 cookies.py
-rw-rw-r-- 1 root root 20167 Sep 4 16:05 cookies.pyc
-rw-r--r-- 1 root root 1599 Mar 26 2015 exceptions.py
-rw-rw-r-- 1 root root 3863 Sep 4 16:05 exceptions.pyc
-rw-r--r-- 1 root root 820 Sep 24 2013 hooks.py
-rw-rw-r-- 1 root root 1055 Sep 4 16:05 hooks.pyc
-rw-r--r-- 1 root root 1846 Mar 26 2015 __init__.py
-rw-rw-r-- 1 root root 2501 Sep 4 16:05 __init__.pyc
-rw-r--r-- 1 root root 25332 Mar 26 2015 models.py
-rw-rw-r-- 1 root root 23051 Sep 4 16:05 models.pyc
-rw-r--r-- 1 root root 22042 Mar 26 2015 sessions.py
-rw-rw-r-- 1 root root 18049 Sep 4 16:05 sessions.pyc
-rw-r--r-- 1 root root 3136 Sep 24 2013 status_codes.py
-rw-rw-r-- 1 root root 4439 Sep 4 16:05 status_codes.pyc
-rw-r--r-- 1 root root 3575 Sep 24 2013 structures.py
-rw-rw-r-- 1 root root 6359 Sep 4 16:05 structures.pyc
-rw-r--r-- 1 root root 19642 Mar 26 2015 utils.py
-rw-rw-r-- 1 root root 19386 Sep 4 16:05 utils.pyc
私が持っている別のVMの作業バージョンを確認したところ、Python関連のすべてが動作し、requestsフォルダにはその通り同じファイル。
動作しない Linux (下記) での urllib への言及は、動作する Linux (さらに下記) の場合と同じですが、2 つのファイルの日付が互いに変更されています。
[ 4096 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3
[ 3346 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/_collections.pyc
[ 22000 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/connectionpool.pyc
[ 4096 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/contrib
[ 6015 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/exceptions.pyc
[ 6511 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/fields.pyc
[ 3162 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/filepost.pyc
[ 2074 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/__init__.pyc
[ 4096 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/packages
[ 9076 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/poolmanager.pyc
[ 5850 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/request.pyc
[ 9879 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/response.pyc
[ 19662 Sep 4 16:05] /usr/lib/python2.7/dist-packages/urllib3/util.pyc
[ 28639 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/connectionpool.py
[ 5961 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/fields.py
[ 2486 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/filepost.py
[ 10159 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/response.py
[ 20575 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/util.py
[ 1703 Sep 25 2013] /usr/lib/python2.7/dist-packages/urllib3/__init__.py
[ 3274 Sep 25 2013] /usr/lib/python2.7/dist-packages/urllib3/exceptions.py
[ 2898 Aug 14 2013] /usr/lib/python2.7/dist-packages/urllib3/_collections.py
[ 9009 Aug 14 2013] /usr/lib/python2.7/dist-packages/urllib3/poolmanager.py
[ 5874 Aug 14 2013] /usr/lib/python2.7/dist-packages/urllib3/request.py
[ 17079 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3-1.7.1.egg-info
[ 7142 Oct 5 14:47] /usr/lib/python2.7/lib2to3/fixes/fix_urllib.pyc
[ 8385 Oct 26 2016] /usr/lib/python2.7/lib2to3/fixes/fix_urllib.py
[ 46549 Oct 5 14:47] /usr/lib/python2.7/urllib2.pyc
[ 50626 Oct 5 14:47] /usr/lib/python2.7/urllib.pyc
[ 51788 Oct 26 2016] /usr/lib/python2.7/urllib2.py
[ 59371 Oct 26 2016] /usr/lib/python2.7/urllib.py
動作しているものは以下です:
[ 4096 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3
[ 3346 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/_collections.pyc
[ 22000 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/connectionpool.pyc
[ 4096 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/contrib
[ 6015 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/exceptions.pyc
[ 6511 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/fields.pyc
[ 3162 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/filepost.pyc
[ 2074 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/__init__.pyc
[ 4096 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/packages
[ 9076 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/poolmanager.pyc
[ 5850 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/request.pyc
[ 9879 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/response.pyc
[ 19662 Jul 10 9:06] /usr/lib/python2.7/dist-packages/urllib3/util.pyc
[ 28639 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/connectionpool.py
[ 5961 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/fields.py
[ 2486 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/filepost.py
[ 10159 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/response.py
[ 20575 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3/util.py
[ 1703 Sep 25 2013] /usr/lib/python2.7/dist-packages/urllib3/__init__.py
[ 3274 Sep 25 2013] /usr/lib/python2.7/dist-packages/urllib3/exceptions.py
[ 2898 Aug 14 2013] /usr/lib/python2.7/dist-packages/urllib3/_collections.py
[ 9009 Aug 14 2013] /usr/lib/python2.7/dist-packages/urllib3/poolmanager.py
[ 5874 Aug 14 2013] /usr/lib/python2.7/dist-packages/urllib3/request.py
[ 17079 Oct 12 2015] /usr/lib/python2.7/dist-packages/urllib3-1.7.1.egg-info
[ 46549 Jul 12 11:47] /usr/lib/python2.7/urllib2.pyc
[ 50626 Jul 12 11:47] /usr/lib/python2.7/urllib.pyc
[ 7142 Jul 12 11:47] /usr/lib/python2.7/lib2to3/fixes/fix_urllib.pyc
[ 8385 Oct 26 2016] /usr/lib/python2.7/lib2to3/fixes/fix_urllib.py
[ 51788 Oct 26 2016] /usr/lib/python2.7/urllib2.py
[ 59371 Oct 26 2016] /usr/lib/python2.7/urllib.py
もう機能しない別のツールの例はtosheets
https://github.com/kren1/tosheets:
tosheets
Traceback (most recent call last):
File "/usr/local/bin/tosheets", line 7, in <module>
from tosheets.tosheets import main
File "/usr/local/lib/python2.7/dist-packages/tosheets/tosheets.py", line 27, in <module>
from apiclient import discovery
ImportError: cannot import name discovery
を実行した後unset PYTHON
、次の操作を実行します。
>>> import sys
>>> sys.path
['', '/usr/local/lib/python2.7/dist-packages/multiqc-1.4dev-py2.7.egg', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7', '/home/avilella/Downloads/dx-toolkit/share/dnanexus/lib/python2.7/site-packages', '/home/avilella/Downloads/dx-toolkit/lib/python', '/home/avilella', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/avilella/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
PYTHON の設定を解除します (python3):
>>> import sys
>>> sys.path
['', '/home/avilella/Downloads/dx-toolkit/share/dnanexus/lib/python2.7/site-packages', '/home/avilella/Downloads/dx-toolkit/lib/python', '/home/avilella', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
ソースを実行する前の $PYTHONPATH の内容は空です。
内容はDownloads/dx-toolkit/environment
以下の通りです。
# -*- Mode: shell-script -*-
#
# Copyright (C) 2013-2016 DNAnexus, Inc.
#
# This file is part of dx-toolkit (DNAnexus platform client libraries).
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy
# of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#
# Source this file in a bash shell to initialize DNAnexus environment
# variables:
# $ source environment
# This line is compatible with both bash and csh/tcsh. If running in csh, it sources the file "environment.csh" and quits.
test ! -z "$version" && echo "$shell" | grep -q csh && set SOURCE=`echo $_ | cut -f 2 -d " "` && set SOURCE=`dirname "$SOURCE"` && source "$SOURCE/environment.csh" && exit
# Resolve the location of this file
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
# Get RHEL version
if [ -e /etc/redhat-release ] ; then
RHEL_MAJOR_VERSION=$(grep -o "Red Hat Enterprise Linux .* release [0-9]\+" /etc/redhat-release | sed -e "s/Red Hat Enterprise Linux .* release //")
fi
export DNANEXUS_HOME="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
# Detect system installation of dx-toolkit
if [ "$DNANEXUS_HOME" == "/etc/profile.d" ]; then
export DNANEXUS_HOME="/usr/share/dnanexus"
# Private Python packages. We really ought not pollute PYTHONPATH with these though.
export PYTHONPATH="/usr/share/dnanexus/lib/python2.7/site-packages:$PYTHONPATH"
export CLASSPATH="/usr/share/java/dnanexus-api-0.1.0.jar:${CLASSPATH}"
else
export PATH="${DNANEXUS_HOME}/bin:$PATH"
export CLASSPATH="${DNANEXUS_HOME}/lib/java/*:${CLASSPATH}"
if [ "$RHEL_MAJOR_VERSION" == "7" ]; then
export PYTHONPATH="${DNANEXUS_HOME}/share/dnanexus/lib/python2.7/site-packages:${DNANEXUS_HOME}/lib64/python2.7/site-packages:$PYTHONPATH"
else
export PYTHONPATH="${DNANEXUS_HOME}/share/dnanexus/lib/python2.7/site-packages:${DNANEXUS_HOME}/lib/python:$PYTHONPATH"
fi
fi
# Note: The default I/O stream encoding in Python 2.7 (as configured on ubuntu) is ascii, not UTF-8 or the system locale
# encoding. We reset it here to avoid having to set it for every I/O operation explicitly.
export PYTHONIOENCODING=UTF-8
eval "$(register-python-argcomplete dx|sed 's/-o default//')"
# Clean up old session files
(shopt -s nullglob;
if [[ $HOME != "" ]]; then
for session_dir in "${HOME}/.dnanexus_config/sessions/"*; do
if ! ps -p $(basename "$session_dir") &> /dev/null; then
rm -rf "$session_dir"
fi
done
fi
)
if [[ -z "$DX_SECURITY_CONTEXT" && -n "$DX_AUTH_TOKEN" ]]; then
export DX_SECURITY_CONTEXT="{\"auth_token_type\":\"Bearer\",\"auth_token\":\"$DX_AUTH_TOKEN\"}"
fi
同様の Ubuntu 14.04 VM が動作していますが、特定のフォルダーを rsync して、動作していない Ubuntu 14.04 を通常の状態に戻すことは可能でしょうか?
この時点で行き詰まっていて、これ以上どう進めばいいのか分からないようです。
答え1
setup.py のモードdevelop
は、ローカル コード パスを にリンクしますPYTHONPATH
。
によってローカル パッケージをインストールすると
python setup.py develop
、システムが変更されPYTHONPATH
、環境変数から削除するのが面倒になります。
PYTHONPATH
それらをアンインストールしてデフォルトに戻す正しい方法を見つけましたここ開発するには、--uninstall
またはオプションを使用する必要があります。-u
python setup.py develop --uninstall
PS: 最初にパッケージをアンインストールできない場合は、再インストールしてからもう一度アンインストールしてください。
答え2
唯一の解決策は、OS を最初から再インストールすることだとわかりました。