Je travaille sur un programme utilisant Python 3 depuis quelques mois. Je le teste depuis quelque temps déjà et cela semble fonctionner comme il se doit. J'ai donc essayé de le faire fonctionner sur un DSM/Synology (Modèle: DS209 +, Version: DSM 4.2-3259). Malheureusement, je ne connais rien à cet environnement . J'ai donc installé python3 (3.3.2-0005) à partir du Centre de paquets Synology et je l'ai fait fonctionner. Exécuter mon code fonctionne ... Le seul problème est que mon programme utilise la bibliothèque "request". Cependant, je ne peux tout simplement pas faire fonctionner pip. Pour installer pip, j'ai essayé d'utiliser la ligne suivante dans PuTTY.
curl -k https://bootstrap.pypa.io/get-pip.py | python3
Je m'attendrais à ce que pip télécharge/installe et l'utilise pour obtenir la bibliothèque de demandes. Mais alors cela se produit et je ne sais pas ce que j'ai fait de travers:
The directory '/var/services/homes/admin/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
The directory '/var/services/homes/admin/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
Collecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
100% |################################| 1.3MB 131kB/s
Collecting setuptools
Downloading setuptools-38.2.4-py2.py3-none-any.whl (489kB)
100% |################################| 491kB 305kB/s
Collecting wheel
Downloading wheel-0.30.0-py2.py3-none-any.whl (49kB)
100% |################################| 51kB 296kB/s
Installing collected packages: pip, setuptools, wheel
Exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.3/distutils/sysconfig.py", line 449, in _init_posix
with open(filename) as file:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/include/python3.3m/pyconfig.h'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/tmp/tmpdqp31o/pip.Zip/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/tmp/tmpdqp31o/pip.Zip/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/tmp/tmpdqp31o/pip.Zip/pip/req/req_set.py", line 784, in install
**kwargs
File "/tmp/tmpdqp31o/pip.Zip/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/tmp/tmpdqp31o/pip.Zip/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/tmp/tmpdqp31o/pip.Zip/pip/wheel.py", line 247, in move_wheel_files
prefix=prefix,
File "/tmp/tmpdqp31o/pip.Zip/pip/locations.py", line 153, in distutils_scheme
i.finalize_options()
File "/usr/local/lib/python3.3/distutils/command/install.py", line 313, in finalize_options
(prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix')
File "/usr/local/lib/python3.3/distutils/sysconfig.py", line 531, in get_config_vars
func()
File "/usr/local/lib/python3.3/distutils/sysconfig.py", line 456, in _init_posix
raise DistutilsPlatformError(my_msg)
distutils.errors.DistutilsPlatformError: invalid Python installation: unable to open /usr/local/include/python3.3m/pyconfig.h (No such file or directory)
Il semble que l'utilisation de Sudo -H résoudrait le problème. Cependant, je ne sais pas comment faire cela ni par où commencer. Googler la question n'a pas beaucoup aidé non plus parce que les choses que j'ai trouvées étaient soit trop vagues pour que je puisse comprendre, soit qu'ils avaient ce problème avec pip déjà installé . J'espère que cette question n'est pas trop vague non plus.
Comme @hoefling déjà mentionné, c'est une question de privilège.
Connexion via SSH
ssh user@synology
et entrez le mot de passe de l'utilisateur.
Obtenir les privilèges d'administrateur
Sudo su
et entrez le mot de passe Sudo.
Obtenir le fichier d'installation
wget https://bootstrap.pypa.io/get-pip.py
et exécutez le fichier d'installation.
python get-pip.py
Faites-moi savoir si cela a fonctionné pour vous.
Lors de l'utilisation d'un nouveau venv pip est disponible automatiquement. Par exemple:
user@Host:~$ python3 -m venv env
user@Host:~$ . env/bin/activate
(env) user@Host:~$ pip --version
pip 7.1.2 from /volume1/homes/user/env/lib/python3.5/site-packages (python 3.5)
Après cela, vous pouvez mettre à niveau pip vers la version actuelle:
user@Host:~$ pip install --upgrade pip
...
Successfully installed pip-18.0
Cela présente également l’avantage que l’installation de packages avec pip ne peut pas casser le système python.
Pour activer automatiquement votre environnement, vous pouvez créer un .profile
:
user@Host:~$ touch ~/.profile
user@Host:~$ chmod u=rwx ~/.profile
puis faites en sorte que le contenu ressemble à ceci:
#!/bin/sh
. env/bin/activate
Connectez-vous à DSM avec la permission root via SSH/Telnet :
ssh [email protected]
Sudo -i
pour passer à root.Après vous être connecté en tant que root, vous disposez des autorisations nécessaires pour installer pip
:
root@x:~# curl -k https://bootstrap.pypa.io/get-pip.py | python3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1558k 100 1558k 0 0 1076k 0 0:00:01 0:00:01 --:--:-- 1076k
Collecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 506kB/s
Collecting setuptools
Downloading setuptools-38.4.0-py2.py3-none-any.whl (489kB)
100% |████████████████████████████████| 491kB 1.1MB/s
Collecting wheel
Using cached wheel-0.30.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-38.4.0 wheel-0.30.0