difference between "Python" file and "python2.7" file on macOS - python

I have a macOS Sierra 10.12.3 and I have installed Python 2.7.13 by downloading it from the official Python site.
When I type which python I get /Library/Frameworks/Python.framework/Version/2.7/bin/python. The python file referenced in this result is a shortcut for python2.7 file located in the same directory.
I'm wondering what is the difference between Python (with the capital "P") file located in /Library/Frameworks/Python.framework/Version/2.7 and the one mentioned above? Thanks.

python is alias name for current python binary. It's symlink to some version of python binary called Python. Something like
/Library/Frameworks/Python.framework/Version/2.7/Python
/Library/Frameworks/Python.framework/Version/3.5/Python
Currently code for 2.7+ and 3.0+ may conflict (like use print(x) instead of print x or range for generators instead xrange in 2.7. etc).
So if your scripts are not ported for newest version you will probably catch a lot of errors while executing
python my_cool_script.py
because you wrote code for 2.7 and after installation you trying to execute it with 3.5 version. So you can change symlink back to Version/2.7/Python and execute the same command and it will work like you code it and version conflict will be solved.

Related

How to remove python 2.7 from Mac OS X 10.14.5?

I realise that there is already an answer for the question but its for Mac OS X 10.6.4 and the python he installed was from "python.org". My python 2.7 has come built-in in my Mac so how do I remove it? Is there any way of removing it? I have installed a python3.7 from the website and it is working perfectly but 2.7 is also working. I want to remove 2.7 and make it such that when i type "python" in terminal it runs python3.7 and not 2.7.
You don't have to remove python 2.7. You can simply add the command as an alias (you can also add this in your ~/.bash_profile file):
alias python='python3.7'
Do not remove python 2.7 (default python package), it may damage your operating system.
If you want you can simply use this command (removes the python installed with homebrew):
brew uninstall python
Refer this question if you really thinking of removing python 2.7. Here is another question which will give you more information.
the 2.7 version of python is a bundle that comes along with the MAC Unix operating system. which means maybe you not using it but there are some pre-loaded programs and dependencies which uses python hence you cannot remove it completely. If you want to use python 3 directly from the terminal's command line just use "python3" in place of "python". this will launch python 3.* what ever you have installed.
A Mac has more Pythons than a Malaysian jungle.
A new Mac M1 has version 2.7 in /System/Library/Frameworks/Python.framework/Versions/2.7
If you use Homebrew to install Vim, it uses /opt/homebrew/Cellar/python#3.9, and it warns you if you delete it, Vim won't work.
Meantime, I want to do the introductory tensorflow machine learning course, and it insists on Python 3.8
So in my .bash_profile
alias python='/opt/homebrew/Cellar/python#3.8/3.8.8_1/bin/python3'
alias python3='python'
alias python3.8='python3'
and I deleted all references to Python2.7.
But when I open a new terminal, and run a Python program which does
print(sys.path)
it includes /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
and tensorflow won't work. The Mac is inserting its own Python into what I want.

python path error

I had two version of python.. python 2.6 and python 2.7
I just now deleted python 2.6 (rather in very unsafe way)..
Now when I type python, I get this error:
python: VERSIONER_PYTHON_VERSION environment variable error (ignored)
python: posix_spawn: /System/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python: No such file or directory
My python 2.7 is installed in
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
When i do which python
I get /usr/bin/python
How do i resolve this mess I have created.
Looks like you deleted the Apple-supplied Python 2.6. You shouldn't have done that. Never delete files in /usr, other than /usr/local, or in /System/Library. When you install another framework version of Python, like you did with the Python 2.7 into /Library/Frameworks, the way to manage which one you use is by managing your shell PATH environment variable, not by attempting to modify /usr/bin/python. You have three primary options now: (1) live without the Apple-supplied Python 2.6 until your next OS X upgrade and hope that no other Apple-supplied utilities you need depend on it; or (2) reinstall all of OS X; or (3) if you remember exactly what you deleted and have a full backup, attempt to restore the deleted files. To use the newer Python 2.7, put it first on your path, for example:
export PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH

How do I fix there is no such module error in python 2.6?

I've been using python 2.7 and after installation of python 2.7. All of the scripts have run successfully, but suddenly today, when I run python, it is recognized with python 2.6, so for one of the python packages I get the following error:
/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python:
No module named htseq-count
i am not sure why it happens. The path environment variable for python is set to:
PATH="/Library/Frameworks/Python.framework/Versions/2.7/Resources/bin:${PATH}" export PATH
How do I fix this error?
If your code relies on a particular version of Python, you should specify python2.7 or python2.6 instead of just python.
If this "suddenly" happened it's possible that installing some other software modified your $PATH so that the old version of Python now has priority (it's possible for multiple versions to be on your $PATH; it uses the first one it finds).
If you move these two lines to the bottom of the file they're in (maybe ~/.profile) it may correct this.
PATH="/Library/Frameworks/Python.framework/Versions/2.7/Resources/bin:${PATH}"
export PATH
You can type which python in Terminal you can see what binary it finds when looking for python on your $PATH.
If you don't mind using Python 2.6, you can probably install the missing package by typing this in your terminal:
easy_install-2.6 htseq
I think you are applying different python version to be used.
type
which python
under your control.
see which python you are using, you should config the one using python 2.7
python --version

Python 2.7.1 can't see Twisted

I have a new MacBook Pro running OS X 10.6.6 / Snow Leopard -- which ships with Python 2.6, although I have installed 2.7.1
Unfortunately, this doesn't seem to see the Twisted install in the 2.6/Extras/lib/python/twisted directory, as I find I'm unable to import modules that I can see are present in that directory.
"which python" returns "/Library/Frameworks/Python.framework/Versions/2.7/bin/python"
and running python returns the same: "Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34)"
I have added the twisted directory (absolute) to sys.path, and I have added it to .bash_profile, which now consists of the following:
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
PATH=$PATH:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/twisted
export PATH
Any ideas how I can get 2.7.1 to see the Twisted install? Or am I trying to do something that just can't be done?
thanks.
You'll need to install Twisted into your Python 2.7 installation somehow. The "2.6" in that path should be a hint that you shouldn't be trying to tell Python 2.7 about it. Among other things:
Extension modules are not compatible between python versions. You may get a segfault if you try to use them.
Bytecode formats are not compatible between python versions. Python will fall back to parsing '.py' files, which is slower.
If you're using an operating system that ships with Python 2.6, there is a good chance that the version of Twisted included is not compatible with Python 2.7, since Python 2.7 may not have been out yet when it was released.
You'll have to install twisted using python 2.7.
Also, python doesn't look up what's in the PATH variable for imports, it looks in PYTHONPATH. But just putting your python 2.6 folder in your pythonpath isn't a very good solution.
Create an environment using virtualenv.
Install Twisted in your newly created environment using pip.
You need to set up an environment for your new Python 2.7 or use the OS installed 2.6.
OS X ships with NumPy for example, but your new Python 2.7 will not 'see' it.
The best solution (IMHO) is this:
o Don't change the OS default Python AT ALL!
o Install Python 2.7, 3.0 as you wish with the system Python first in the path
o Use virtualenv to set up a personal Python environment -- a sandbox. Install twisted into that.
o Install libraries into the environment you are going to use for the job. Might mean duplicates.
o Use your shebang to execute the proper Python

ImportError: no module named py2exe

I get this error when I try to use one of the py2exe samples with py2exe.
File "setup.py", line 22, in ?
import py2exe
ImportError: no module named py2exe
I've installed py2exe with the installer, and I use python 2.6. I have downloaded the correct installer from the site (The python 2.6 one.)
My path is set to C:\Python26 and I can run normal python scripts from within the command prompt.
Any idea what to do?
Thanks.
Edit: I had python 3.1 installed first but removed it afterwards. Could that be the problem?
Sounds like something has installed Python 2.4.3 behind your back, and set that to be the default.
Short term, try running your script explicitly with Python 2.6 like this:
c:\Python26\python.exe setup.py ...
Long term, you need to check your system PATH (which it sounds like you've already done) and your file associations, like this:
C:\Users\rjh>assoc .py
.py=Python.File
C:\Users\rjh>ftype Python.File
Python.File="C:\Python26\python.exe" "%1" %*
Simply removing Python 2.4.3 might be a mistake, as presumably something on your system is relying on it. Changing the PATH and file associations to point to Python 2.6 probably won't break whatever thing that is, but I couldn't guarantee it.
Seems like you need to download proper py2exe distribution.
Check out if your c:\Python26\Lib\site-packages\ contains py2exe folder.
If you have any other versions of Python installed, it may be that another Python version is the default Python. Could this be the case? I believe the default Python installation is determined from a registry setting.
I had the exact same issue and I just managed to get it solved - so I thought I would share my solution.
It turned out that my installation of CollabNet SVN contained an old version of Python that interfered with my recent Python2.7 installation.
Replacing CollabNet SVN with VisualSVN (including a couple of reboots) did the trick. I know this is not a "pretty" solution, as it caused me to uninstall CollabNet SVN - a prettier solution might have been doing modifications to the PATH env. variable... However, I am now able to use py2exe :)
For the record, my very similar problem was caused by using a Cygwin prompt. Using as standard cmd.exe shell instead worked (given all paths and correctly installed versions of python).
This was because (stupid me) the Cygwin install had pulled down it's own version of /usr/bin/python. I equally fixed it by adding the Windows installed python location to the head of the Cygwin PATH=/cygdrive/c/Python27:$PATH.
You might need to install the py2exe module globally, perhaps you might have installed to a virtualenv. I had the same problem, installing the module globally fixed the problem

Categories

Resources