O script de shell não instala corretamente o python3-pip

0

Eu configurei um script para instalar um monte de coisas para um projeto no qual estou trabalhando, além de uma maneira fácil de instalar módulos python que uso. Quando executo isso, ele mostra com precisão se o python3 + está instalado também instala o python3, se não estiver lá.

Faz o download do portaudio e o cria. Ele funciona quando eu tento instalar módulos python e depois ele falha. O erro que recebo é

/usr/binpython3: No module named pip

Se eu manualmente sudo o apt-get install python3-pip ele funciona e se eu re-executar o script ele termine de instalar todos os módulos abaixo do python. Alguém pode me dizer por que não está instalando python3-pip corretamente? Ou será que isso não está definindo o caminho certo? Existe uma maneira melhor de fazer isso?

if [ $(id -u) = 0 ]; then
    echo "Do not run as root, yet. Try again."
    exit 1
fi

req='python3 -c 'import sys; print("%i" % (sys.hexversion<0x03000000))''
if [ $req -eq 0 ]; then
    echo 'python version is >= 3'
    echo 'Installing dependices'
    sudo apt-get install python3-pip libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-setuptools python3-wheel python3.5-dev build-essential git python3-dev ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev swig libpulse-dev python3-audio libasound-dev
    sudo apt-get update
else 
    echo "python version is < 3"
    echo "Installing Python3+ and dependencies" 
    sudo apt-get install python3 python3-pip libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-setuptools python3-wheel python3.5-dev build-essential git python3-dev ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev swig libpulse-dev python3-audio libasound-dev
    sudo apt-get update
    echo "Python 3 is now installed." 
fi 
read -p "Install remaining dependencies?(y/n)" ok
wget - http://www.portaudio.com/archives/pa_stable_v190600_20161030.tgz
tar -xvzf pa_stable_v190600_20161030.tgz
cd portaudio
echo n | ./configure && make
echo n | sudo make install
sudo apt-get update
echo n | sudo -H python3 -m pip install Cython==0.23 pyttsx3 chatterbot PyAudio PocketSphinx SpeechRecognition kivy==1.9.1
sudo -H python3 -m pip install bleach boto boto3 botocore bz2file cffi click colorama command-not-found cryptography cssselect decorator docutils fire flashtext Flask future gensim google-api-core google-api-python-client google-auth google-cloud-core google-cloud-storage google-resumable-media googleapis-common-protos html5lib httplib2 idna imbalanced-learn jedi Jinja2 jupyter jupyter-client jupyter-console jupyter-core kappa Keras  luminoth lxml nltk notebook numpy pandas pendulum Pillow pyasn1 pycrypto Pygments pygobject PyICU pymongo PyNaCl PyOpenGL PyQt5 PySDL2 pySFML python-dateutil python-twitter pytz PyYAML pyzmq qtconsole regex requestium requests rsa scikit-learn scipy selenium setuptools sip six SQLAlchemy ssh-import-id style tensorflow tensorflow-gpu tensorflow-tensorboard Theano tornado tqdm  urllib3 wheel xkit xlwt
if ! [ $ok = "y" -o $ok = "Y" ]; then exit 1

fi
    
por Afflicted 12.03.2018 / 22:08

1 resposta

2

Provavelmente seu comando apt-get falhará sem que você perceba. Não está claro em qual versão do Ubuntu você está trabalhando, mas pelo menos em 16.04 o pacote "python3-audio" parece não existir, fazendo com que o comando falhe.

Tente colocar o nome correto do pacote (provavelmente "python3-pyaudio") no seu script.

Em geral, parece que um sistema como ansible em vez de um script de shell seria mais apropriado para o que você está fazendo aqui.

    
por Sebastian Stark 13.03.2018 / 08:31