Invoking an earlier version of python in cmd - windows

I've installed Python 2.7 and python 3.4 on my system. Earlier i was using 3.4 but now require 2.7 as well (for a course I'm taking, which requires some files which are not there for 3.4). When I type python in cmd it by default initializes 3.4. Is there some way to change it to 2.7 by default?
Thanks
UPDATE: I was able to invoke it using 'py'. Here's the link if anyone else has a confusion. https://docs.python.org/3/using/windows.html?highlight=shebang#python-launcher-for-windows (from some other answer)

Update:
If your system environment is Windows:
1) call py -2.7 or py -3 based on the version you want.
2) change your PATH system environment variable , makes sure it refers to the version you want.
You can do it in serveral ways on Linux environment:
1)
call a specific Python binary you can call the explicit full path (e. g. /usr/local/bin/python). This will call the same executable regardless of the value of the $PATH variable.
2)
configure your accounts so that both have the same binary first in the $PATH variable.
3)
call python2 and python3; many installations symlink these to the corresponding binaries.
$ python2
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Related

Why do I need to install packages that are "automatically installed with Anaconda"?

The Anaconda website states that Over 150 packages are automatically installed with Anaconda. Of which I assume it is referring to the packages with a check mark under "In Installer".
However, it appears that not all packages that are "In Installer" are actually installed
e.g. sympy is stated as "In Installer" however, when I create an environment and firing up python, import sympy gives No module named 'sympy' and I have to run conda install sympy to install it
My question is, how do I interpret the meaning of "automatically installed with Anaconda" and "In Installer"?
The default packages (installed via the installer) are present in the root environment. If you want to have those packages in a newly created environment, simply clone the environment containing those packages:
(root) ~/condaexpts$ conda create -yn sympyenv --clone root
Source: /home/ubuntu/condaexpts/m2
Destination: /home/ubuntu/condaexpts/m2/envs/sympyenv
The following packages cannot be cloned out of the root environment:
- conda-4.3.9-py27_0
- conda-env-2.6.0-0
Packages: 26
Files: 0
#
# To activate this environment, use:
# > source activate sympyenv
#
# To deactivate this environment, use:
# > source deactivate sympyenv
#
(root) ~/condaexpts$ source activate sympyenv
(sympyenv) ubuntu#gitlab:~/condaexpts$ python
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:42:40)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import sympy
>>> sympy.__version__
'1.0'
>>>

ipython can't load a module which python does

I have recently updated to OSX El Capitain upgrading an exhisting working osx installation. Now I have a module, installed via pip on an anaconda distribution which is now broken. Or better the module can be correctly imported from python
Python 2.7.10 |Anaconda 2.3.0 (x86_64)| (default, Sep 15 2015, 14:29:08)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import MDSplus as mds
whereas it does not load on ipython, claiming not to finding a library.
Python 2.7.10 |Anaconda 2.3.0 (x86_64)| (default, Sep 15 2015, 14:29:08)
Type "copyright", "credits" or "license" for more information.
IPython 4.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
Using matplotlib backend: MacOSX
In [1]: import MDSplus as mds
Error importing MDSplus package: Error finding library: MdsShr
The library is correctly installed, it is listed in /etc/profile, it is located in /usr/local (so there should not be a problem with the new security system of OSX el Captain) and the python interpreted which is called via python or ipython is the same (Anaconda 2.3.0).
How can I diagnose which is the problem?
EDIT:
the solution proposed in https://groups.google.com/a/continuum.io/forum/#!topic/anaconda/PEuOKEM5fdc does not worked for me. It does not seem to be an environment problem and the command
echo $DYLD_LIBRARY_PATH
points to the correct path
EDIT:
which -a ipython
ipython is /Users/vianello/anaconda/bin/ipython
which -a python
python is /Users/vianello/anaconda/bin/python
python is /usr/bin/python
>>> import sys
>>> for x in sys.path: print x
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/pyhht-0.0.1-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/MitDevices-0.3-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/MDSplus-alpha_7.0.157-py2.7.egg
>>>//anaconda/lib/python2.7/site-packages/MDSplus-alpha_7.0.147-py2.7.egg/MDSplus
>>>/Users/vianello/anaconda/lib/python27.zip
>>>/Users/vianello/anaconda/lib/python2.7
>>>/Users/vianello/anaconda/lib/python2.7/plat-darwin
>>>/Users/vianello/anaconda/lib/python2.7/plat-mac
>>>/Users/vianello/anaconda/lib/python2.7/plat-mac/lib-scriptpackages
>>>/Users/vianello/anaconda/lib/python2.7/lib-tk
>>>/Users/vianello/anaconda/lib/python2.7/lib-old
>>>/Users/vianello/anaconda/lib/python2.7/lib-dynload
>>>/Users/vianello/anaconda/lib/python2.7/site-packages
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/PIL
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/aeosa
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/lmfit-0.8.3-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/setuptools-18.3.2-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/suds-0.4-py2.7.egg
in iPython the same give the results
/Users/vianello/anaconda/bin
/Users/vianello/anaconda/lib/python2.7/site-packages/pyhht-0.0.1-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/MitDevices-0.3-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/MDSplus-alpha_7.0.157-py2.7.egg
/Users/vianello/anaconda/lib/python27.zip
/Users/vianello/anaconda/lib/python2.7
/Users/vianello/anaconda/lib/python2.7/plat-darwin
/Users/vianello/anaconda/lib/python2.7/plat-mac
/Users/vianello/anaconda/lib/python2.7/plat-mac/lib-scriptpackages
/Users/vianello/anaconda/lib/python2.7/lib-tk
/Users/vianello/anaconda/lib/python2.7/lib-old
/Users/vianello/anaconda/lib/python2.7/lib-dynload
/Users/vianello/anaconda/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/lmfit-0.8.3-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/setuptools-18.3.2-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/suds-0.4-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages
/Users/vianello/anaconda/lib/python2.7/site-packages/PIL
/Users/vianello/anaconda/lib/python2.7/site-packages/aeosa
/Users/vianello/anaconda/lib/python2.7/site-packages/IPython/extensions
/Users/vianello/.ipython
Thus the MDSplus-alpha_7.0.157-py2.7.egg can be seen both from python and ipython
My first thought is that you are running afoul of the new Apple System Integrity Protection. iPython is launched using a shell script that loads via /bin/bash. That will result in your DYLD_LIBRARY_PATH environment variable being stripped when python launches. You can check this by importing os and then attempting to print the contents of os.environ["DYLD_LIBRARY_PATH"]. If that print throws an exception then you know what the problem is.
A simple fix that works for me is to edit the first line of the ipython script so that the #! calls your python binary directly rather than going via bash. This is not a long term solution as it will have to be redone each time ipython is updated until upstream changes (to be fair I'm not sure why bash is involved).
I have written a report on python and library paths at http://dmtn-001.lsst.io

How to list all modules python 2.7 and 3.4 have installed for MacOSX

How do I make all modules be available for both python 2.7 and 3.4?
I executed:
$ brew install <prerequisites for pygame>
<snip snip>
<snip snip>
$ brew install pygame
$ pip freeze
<snip snip>
pygame==1.9.2a0
<snip snip>
and can see pygame is installed. When I open a new shell/terminal and run python 2.7 and type import pygame, I have no problems:
Python 2.7.9 |Anaconda 2.2.0 (x86_64)| (default, Dec 15 2014, 10:37:34)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> import pygame
>>>
However, when I run python 3.4 and type import pygame, it says there's no module named pygame.
/usr/local/bin/python3
Python 3.4.2 (default, Dec 11 2014, 17:48:01)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'pygame'
>>>
What do I need to do to make 3.4 see/link with all the modules that 2.7 sees?
P.S. I don't know how but pip is running from anaconda, which I think I might have installed when installing numpy or panda or something.
You cannot use modules installed for Python 2 in Python 3. Python 2 and Python 3 are not compatible, that is why most libraries offer a Python 2 and a Python 3 version.
So if you have PyGame installed with pip2, you can only use it with Python 2. To use PyGame in Python 3, you need to install it with pip3. Afterwards you will have both versions on your computer, so that a project that uses your Python 2 interpreter uses the PyGame installed by pip2 and a project that uses Python 3 interpreter uses the pyGame installed by pip3.
Example:
# test.py
import pygame
In the console:
> python3 test.py # imports pygame from /usr/lib/Python3.x/site-packages
> python2 test.py # imports pygame from /usr/lib/Python2.x/site-packages
You should not use Python 2 modules with Python 3 (and vice versa). Instead, install those separately, e.g.
pip3 install pygame
Sometimes, the code bases for a package will be compatible between 2 and 3, but quite often, they are not (especially when shared object modules, *.so files, come into play).
Also, Python 2 will not have the Python 3 packages library in sys.path by default, and vice versa. For a good reason.
All in all, consider Python 2 and Python 3 two different languages, for which you have to do everything separately. They just happen to be very much alike.
(Personal opinion/bit of advocacy: use and write your code in Python 3, unless you have a very good reason no to (unported essential libraries, chance of losing your job). It's relatively straightforward in 99% of the cases to make it Python 2 compatible later on, if really needed.)

Use SublimeREPL as Django shell

I am learning Django, and Django shell is a frequently used thing, but it is a bit frustrating to switch back and forth to the Terminal window.
I try to use SublimeREPL-shell, but it does not work properly. For instance, I can use python manage.py shell to enter the interactive console in the REPL window, but after that all command and results will not be displayed: it look something like this
bash: no job control in this shell
bash-3.2$ python manage.py shell
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
Well, the results will be displayed if I quit() and they will all show up (but a bit too late...). Something like this
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> >>> [<Person: John>, <Person: Jane>]
>>> bash-3.2$
So I wonder if this is a way to do it properly?
New a .py file in the path of manage.py. it contain these.
#!/usr/bin/env python
# run Django shell in SublimeREPL
# how to use: Meuns > Tools > SublimeREPL > Python > Python - RUN current file
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[your app].settings")
from django.core.management import execute_from_command_line
execute_from_command_line(['.', 'shell'])
How to use: Menus > Tools > SublimeREPL > Python > Python - RUN current file

Listing serial ports in Mac OS X and Python 3

I'm having trouble listing available serial ports and I really need help debugging this.
In Python 2.7.5 the COM-ports are listed correctly while PySerial returns an empty list in Python 3.3.5.
I found one other lonely soul with the same problems on the internet (no answers), but the problem doesn't seem to be popular at all - maybe it's my system?
I'm using Mac OS X 10.9.2 and installed python and python3 via homebrew. I updated everything just now. PySerial is at version 2.7 in both pip and pip3.
The output:
Python 2.7.5 (default, Nov 4 2013, 18:04:45)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from serial.tools import list_ports
>>> list_ports.comports()
[['/dev/cu.Bluetooth-Incoming-Port', 'n/a', 'n/a'], ['/dev/cu.Bluetooth-Modem', 'n/a', 'n/a']]
Python 3.3.5 (default, Mar 10 2014, 13:25:50)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from serial.tools import list_ports
>>> list_ports.comports()
[]
For the moment I'm resorting to the following method. The PySerial tools are broken.
>>> import glob
>>> glob.glob('/dev/tty.*')
['/dev/tty.Bluetooth-Incoming-Port', '/dev/tty.Bluetooth-Modem']
The root cause of the problem stems from the fact that python3 encodes strings as unicode (wide) strings, and python2 encodes strings as narrow strings.
So the pyserial code needs to pass down narrow strings when calling the API functions from iokit.
I discovered that somebody else also ran into this and posted a patch. You can find his patch at the end of this issue:
http://sourceforge.net/p/pyserial/patches/38/
Using that patch, I now get the same behaviour from python3 as I do from python2.
I had installed python3 using macports, and my installation of pyserial for python3 was found in this directory:
/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/serial
so I executed the following:
cd /opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/serial/tools
sudo cp list_ports_osx.py list_ports_osx_orig.py
sudo curl -O http://sourceforge.net/p/pyserial/patches/_discuss/thread/603bd426/55a8/attachment/list_ports_osx.py
and that made list_ports.comports() work for me.

Resources