Restaure PYTHONPATH após a instalação do setup.py com PYTHONPATH

Restaure PYTHONPATH após a instalação do setup.py com PYTHONPATH

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 installe 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/environmentestá 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 developmodo 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 PYTHONPATHe deixá-lo louco para excluí-lo das variáveis ​​de ambiente.

Encontrei uma maneira correta de desinstalá-los e restaurar o padrão PYTHONPATHdeaqui. Você precisa usar a opção --uninstallou -upara 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.

informação relacionada