
Executei este comando no Ubuntu 14.04 Linux ao tentar instalar um pacote:
export PYTHONPATH=/usr/local/lib/python2.7/ && sudo python setup.py install
O pacote que eu estava tentando instalar éhttp://github.com/ewels/MultiQC
Então, muitas coisas relacionadas ao python deram errado desde então. Por exemplo, virtualenv não funciona mais e este pacote também não funciona:
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'
Como reverto isso para o estágio antes de executar esta linha de comando? Mesmo começando com um novo terminal bash, agora ele não encontrará nenhuma das minhas outras bibliotecas python. Mesmo com um usuário Linux recém-criado no mesmo computador, os erros são os mesmos.
A pergunta relacionada não foi respondida:Corrigindo uma variável de ambiente PYTHONPATH quebrada
[EDITAR]
Não sei como reverter para a lista de pastas antes, mas presumo que tenha sido uma combinação de /usr/lib/python2.7 e /usr/local/lib/python2.7
Tentar o virtualenv também falha agora:
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 interativo funciona na medida que tentei abaixo:
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
>>>
Agora examinei a pasta e tentei as duas coisas pip install
e apt-get install python-${package}
com isto:
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
Também:
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
Mas ainda são os mesmos problemas.
Solicitações de pacotes estão lá:
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
Verifiquei uma versão funcional de uma VM diferente que possuo, onde tudo relacionado ao python funciona e a pasta de solicitações contémexatamenteos mesmos arquivos.
Quaisquer menções ao urllib no Linux que não funciona (abaixo) são as mesmas que no que funciona (mais abaixo), com 2 arquivos alterando suas datas entre um e outro:
[ 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
O que funciona abaixo:
[ 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
Outro exemplo de ferramenta que não funciona mais é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
Depois de fazer unset PYTHON
, então:
>>> 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']
desmarque PYTHON, o 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']
O conteúdo de $PYTHONPATH antes de fazer qualquer fonte está vazio.
O conteúdo Downloads/dx-toolkit/environment
está abaixo:
# -*- 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
Eu tenho uma VM Ubuntu 14.04 semelhante funcionando. Seria possível sincronizar novamente certas pastas para que o Ubuntu 14.04 que não funciona volte ao normal?
Parece que estou preso neste ponto, sem saber como prosseguir.
Responder1
O develop
modo setup.py vinculará o caminho do seu código local ao PYTHONPATH
.
Se você instalar o pacote local por
python setup.py develop
, isso irá alterar o sistema PYTHONPATH
e deixá-lo louco para excluí-lo das variáveis de ambiente.
Encontrei uma maneira correta de desinstalá-los e restaurar o padrão PYTHONPATH
deaqui. Você precisa usar a opção --uninstall
ou -u
para desenvolver, ou seja:
python setup.py develop --uninstall
PS: se você não conseguir desinstalar o pacote na primeira vez, tente reinstalar e desinstalar novamente.
Responder2
Achei que a única solução é reinstalar o sistema operacional do zero.