Python at Synology, how to get Python3 modules installed and where is Python2.7 installed?
Asked Answered
O

5

7

Can you please advise me how to get Python3 with modules running at my Synology (DS214play, with DSM 6.0.1-7393 Update 1)? What I want: run Tweepy and other modules in Python3 on my Synology.

Where I am stuck:

  1. how to get PIP3 to install Tweepy, if I try I get: Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages

    Apparently I have a Python 2.7 installed but I was not aware...

    root@DiskStation:/volume1/@appstore/python3/include# ls
    get-pip.py  python3.4m
    root@DiskStation:/volume1/@appstore/python3/include# python3 get-pip.py
    -ash: python3: command not found
    root@DiskStation:/volume1/@appstore/python3/include# python get-pip.py
    Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
    
  2. So to get PIP3 to work I need to understand where Python2.7 is installed and maybe even how to remove it (if this is necessary).

  3. And it would be good to know which Python3 package would be best to use (default from Synology DSM package manager or the SynoCommunity Python3 pacakge)

Because I can see Python3 in the DSM package manager and in the related folders when connected with SSH (using PuTTY) to my Synology.

But I do not see any package for Python2.7 (which I believe must be there) and I cannot find any Python 2.7 folders when connected with SSH even tough I have the hint that there must be a " /usr/lib/python2.7/site-packages " folder somewhere...

-> The default Python3 from Synology DSM package manager is in a py3k folder:

admin@DiskStation: /volume1/@appstore/py3k/usr/local/bin$
python3

-> the SynoCommunity Python3 package installs in a different place:

admin@DiskStation: /volume1/@appstore/python3$ ls
bin  etc  include  install.log  lib  openssl.cnf  share
admin@DiskStation: /volume1/@appstore/python3/bin$ ls
2to3      busybox  bzfgrep       bzmore     delgroup          fatattr    infocmp    lzmainfo  pip3      python3.4   reset     start-stop-daemon  tset        virtualenv-3.4  xz
2to3-3.4  bzcat    bzgrep        captoinfo  deluser           gpg-error  infotocap  mpicalc   pip3.4    python3.4m  shuf      tabs               unlink      wheel           xzcat
addgroup  bzcmp    bzip2         clear      dumpsexp          hmac256    lzcat      nice      pydoc3    pyvenv      speexdec  tic                unlzma      xmlcatalog      xzdec
adduser   bzdiff   bzip2recover  c_rehash   easy_install      idle3      lzma       openssl   pydoc3.4  pyvenv-3.4  speexenc  toe                unxz        xmllint
bunzip2   bzegrep  bzless        curl       easy_install-3.4  idle3.4    lzmadec    pip       python3   renice      sqlite3   tput               virtualenv  xsltproc
admin@DiskStation:/volume1/@appstore/python3/bin$ python3
-sh: python3: command not found

What I have done:

I installed Python3 using the Synology DSM package manager and then connected with SSH (using PuTTY) to my Synology and set the PATH and used PIP to install Tweepy and other modules.

I believe it was with some commands like: (unfortunately mostly copy pasted without knowing exactly what it means in detail...)

root@DiskStation:~# curl -k https://bootstrap.pypa.io/get-pip.py | python
  % Total % Received % Xferd Average Speed Time Time Time Current
  Dload Upload Total Spent Left Speed
100 1488k 100 1488k 0 0 1577k 0 --:--:-- --:--:-- --:--:-- 1577k
Collecting pip
  Using cached pip-8.1.2-py2.py3-none-any.whl
Collecting setuptools
  Downloading setuptools-23.1.0-py2.py3-none-any.whl (435kB)
  100% |████████████████████████████████| 440kB 551kB/s
Collecting wheel
  Using cached wheel-0.29.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-8.1.2 setuptools-23.1.0 wheel-0.29.0

I was able to run scripts based on this and quite happy. Until I got some (Unicode) errors and from the error log saw that it is a 2.7 version of Python that runs on my Synology. It seems these Unicode issues are solved in Python3 (which I have on my PC as well) so I would like to have Python3 on Synology as well.

And the 2.7 version is indeed installed, if I connect with SSH and type Python I get:

admin@DiskStation:~$ python
Python 2.7.11 (default, May 13 2016, 05:16:12)
[GCC 4.9.3 20150311 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

This is strange because I do not see any Python 2.7 package at Synology in the package manager so I must have installed 2.7 through some SSH command that I intended just for PIP.

I had the default Python3 package at Synology installed and if I type admin@DiskStation:~$ python3 I did get the python3 ready to work with.

Within the /volume1/@appstore/py3k/ I see all kinds of Python and PIP versions and the python3 works well. However without any modules and the PIP3 does not work ("command not found"), I tried it from all possible directories and in all kinds of formats as suggested on similar Q&As e.g. pip3.4 install tweepy, pip3 install tweepy, etc.

So now using the DSM package manager I have deinstalled Python3 and installed the SynoCommunity Python3 (as suggested on the Synology forum here) which shows a different directory structure. But seems even worse because now I see no references to Python 2.7 anymore (but still it runs so must be there) and even cannot get python3 started:

admin@DiskStation:~$ cd /volume1
admin@DiskStation:/volume1$ cd @appstore
admin@DiskStation:/volume1/@appstore$ cd python3
admin@DiskStation:/volume1/@appstore/python3$ ls
bin  etc  include  install.log  lib  openssl.cnf  share
admin@DiskStation:/volume1/@appstore/python3$ cd bin
admin@DiskStation:/volume1/@appstore/python3/bin$ ls
2to3      bzcmp         bzless     deluser           idle3      lzmainfo  pydoc3      renice             tabs    unxz            xz
2to3-3.4  bzdiff        bzmore     dumpsexp          idle3.4    mpicalc   pydoc3.4    reset              tic     virtualenv      xzcat
addgroup  bzegrep       captoinfo  easy_install      infocmp    nice      python3     shuf               toe     virtualenv-3.4  xzdec
adduser   bzfgrep       clear      easy_install-3.4  infotocap  openssl   python3.4   speexdec           tput    wheel
bunzip2   bzgrep        c_rehash   fatattr           lzcat      pip       python3.4m  speexenc           tset    xmlcatalog
busybox   bzip2         curl       gpg-error         lzma       pip3      pyvenv      sqlite3            unlink  xmllint
bzcat     bzip2recover  delgroup   hmac256           lzmadec    pip3.4     pyvenv-3.4  start-stop-daemon  unlzma  xsltproc
admin@DiskStation:/volume1/@appstore/python3/bin$ python3
-sh: python3: command not found
admin@DiskStation:/volume1/@appstore/python3/bin$ python
Python 2.7.11 (default, May 13 2016, 05:16:12)
[GCC 4.9.3 20150311 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

So I reached the point to ask for some tips, hints and advice.

Overfeed answered 1/7, 2016 at 8:54 Comment(1)
There is a lot going on here - you would do well to narrow down what you are asking for.Savdeep
S
1

I'm not sure you can remove Python 2 altogether, but you can install Python 3 and evoke it specifically instead of Python 2.

First, make sure Python 3 is Installed: Log into your Synology via the web administration and in the 'Package Center' make sure 'Python 3' is installed. (You will find it under 'Developer Tools' within the 'Package Center')

Next, specifically evoke Python 3 by simply calling python3

You could also try using the locate command on your Synology to find the exact location of Python 2. To do this enter the following on your Synology:

ipkg update
ipkg install mlocate

And here is a tutorial on how to use the command: http://www.thegeekstuff.com/2012/03/locate-command-examples/

Good luck!

Also, If you don't have luck on Stack Overflow I'd run over to the Synology Forums for help as well: https://forum.synology.com

Savdeep answered 1/7, 2016 at 9:30 Comment(0)
A
11

  • (1)install python2.7 and python3.5 from DSM packages
  • (2)ssh login & sudo -i
  • (3)run python and run python3, if both work go next.
  • (4)run pip -V should return pip 10.0.1, it is for python2.7
  • (5)run pip3 -V return "command not found", ..because the path is not right.
  • (6)try /volume1/@appstore/py3k/usr/local/bin/pip3 -V,
             if sucess. go next. now you can install module for python3,
             it's different path depends on your system, command for example:
             /volume1/@appstore/py3k/usr/local/bin/pip3 install numpy should be work!
  • (7)for convenient, shorter command is good for use,so go next step:
             sudo vi .profile, (or .bashrc for specific user login)
  • (8)add alias at the end:
             alias pip3='/volume1/@appstore/py3k/usr/local/bin/pip3'
  • (9)source .profile or sudo reboot
  • (10)test pip3 -V, should work for python3.x
  • Alberto answered 16/7, 2018 at 12:58 Comment(0)
    O
    4

    Ok, many thx for the replies, I solved it with:

    1. Confirmed that Python 2.7.9 is installed by default in Synology DSM 5.2 (and not visible in package center).

    2. I was able to add modules to Python3 by specifically evoking the pip module installation for Python3 using this command:(thx to this Q&A)

      /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pip install tweepy

    (installing the tweepy module in this case)

    And FYI the full command overview:

    admin@DiskStation:/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages$ sudo -i
    Password:
    root@DiskStation:~# curl -O https://bootstrap.pypa.io/get-pip.py
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 1488k  100 1488k    0     0  1704k      0 --:--:-- --:--:-- --:--:-- 1703k
    root@DiskStation:~# sudo python3 get-pip.py
    Requirement already up-to-date: pip in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages
    root@DiskStation:~# pip install tweepy
    Requirement already satisfied (use --upgrade to upgrade): tweepy in /usr/lib/python2.7/site-packages
    Requirement already satisfied (use --upgrade to upgrade): six>=1.7.3 in /usr/lib/python2.7/site-packages (from tweepy)
    Requirement already satisfied (use --upgrade to upgrade): requests>=2.4.3 in /usr/lib/python2.7/site-packages (from tweepy)
    Requirement already satisfied (use --upgrade to upgrade): requests-oauthlib>=0.4.1 in /usr/lib/python2.7/site-packages (from tweepy)
    Requirement already satisfied (use --upgrade to upgrade): oauthlib>=0.6.2 in /usr/lib/python2.7/site-packages (from requests-oauthlib>=0.4.1->tweepy)
    root@DiskStation:~# python3 ^C
    root@DiskStation:~# python3 /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pip install tweepy
    Collecting tweepy
      Using cached tweepy-3.5.0-py2.py3-none-any.whl
    Collecting requests-oauthlib>=0.4.1 (from tweepy)
      Using cached requests_oauthlib-0.6.1-py2.py3-none-any.whl
    Collecting requests>=2.4.3 (from tweepy)
      Using cached requests-2.10.0-py2.py3-none-any.whl
    Collecting six>=1.7.3 (from tweepy)
      Using cached six-1.10.0-py2.py3-none-any.whl
    Collecting oauthlib>=0.6.2 (from requests-oauthlib>=0.4.1->tweepy)
      Using cached oauthlib-1.1.2.tar.gz
    Building wheels for collected packages: oauthlib
      Running setup.py bdist_wheel for oauthlib ... done
      Stored in directory: /root/.cache/pip/wheels/e6/be/43/e4a2ca8cb9c78fbd9b5b14b96cb7a5cc43f36bc11af5dfac5b
    Successfully built oauthlib
    Installing collected packages: requests, oauthlib, requests-oauthlib, six, tweepy
    Successfully installed oauthlib-1.1.2 requests-2.10.0 requests-oauthlib-0.6.1 six-1.10.0 tweepy-3.5.0
    

    (And I uninstalled the SynoCommunity Python3 package again and now use the DSM package center Python3 version)

    Overfeed answered 3/7, 2016 at 18:26 Comment(1)
    Just to add to the response above, if you prefer to type pip directly every time, you can always set up an alias in /etc/profile: alias pip="python3 /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pip" then do source /etc/profile to reload the profileCoriecorilla
    S
    1

    I'm not sure you can remove Python 2 altogether, but you can install Python 3 and evoke it specifically instead of Python 2.

    First, make sure Python 3 is Installed: Log into your Synology via the web administration and in the 'Package Center' make sure 'Python 3' is installed. (You will find it under 'Developer Tools' within the 'Package Center')

    Next, specifically evoke Python 3 by simply calling python3

    You could also try using the locate command on your Synology to find the exact location of Python 2. To do this enter the following on your Synology:

    ipkg update
    ipkg install mlocate
    

    And here is a tutorial on how to use the command: http://www.thegeekstuff.com/2012/03/locate-command-examples/

    Good luck!

    Also, If you don't have luck on Stack Overflow I'd run over to the Synology Forums for help as well: https://forum.synology.com

    Savdeep answered 1/7, 2016 at 9:30 Comment(0)
    T
    1

    It looks like this has changed a bit in DSM7 since the original answer. In DSM7 you manage python in Web Station, and the path is /volume1/@appstore/Python3.9

    You can install pip via ssh, and assuming root or sudo -i

    1. python3 -m ensurepip
    2. python3 -m pip install --upgrade pip
    3. python3 -m pip -V (to check version and confirm)
    4. python3 -m pip install requests (or whatever module)
    Thelmathem answered 16/3, 2023 at 21:26 Comment(1)
    For me python3 is actually referencing the DSM pre-packed python which is in /bin/python3 -> /bin/python3.8. So you are using version 3.8 and not 3.9. Wondering what would be the best approach to use the 3.9 from the app store.Electrolyte
    I
    0

    You can get pip using get-pip.py. Download from here.

    Inexpiable answered 5/8 at 9:55 Comment(0)

    © 2022 - 2024 — McMap. All rights reserved.