Unable to install mysql connector for Python 3 - mysql

In Python 2.X I used MySQLdb module. But recently I've started to port my application to Python 3.X and now indeed this module is no longer working. This is what I tried to do:
$ pip3 install MySQLdb
$ pip3 install PyMySQL
$ pip3 install mysql-connector-python
But none of these commands (taken from different stackoverflow threads) works. So I need some help.

try the following code for installing sql connector for python3
pip install --allow-external mysql-connector-python mysql-connector-python
it worked for me...

Related

Working in Python 3.7.3 but NOT working in 3.9.6 [duplicate]

I'm trying to install Pygame. I am running Windows 7 with Enthought Python Distribution. I successfully installed pip, but when I try to install Pygame using pip, I get the following error:
"Could not install requirement Pygame because of HTTP error HTTP error
400: Bad request for URL ..."
I can't find anything about this issue with a Google search, but I did find another Stack Overflow question that prompted the asker to use the following command:
pip install hg+http://bitbucket.org/pygame/pygame
This gave me the following error:
Cannot find command hg
I'm not sure what else to do, as everything I find with a Google search is for Mac, so I don't know how well I can follow those instructions on Windows.
Steps to install PyGame using pip
Install build dependencies (on linux):
sudo apt-get build-dep python-pygame
Install mercurial to use hg (on linux):
sudo apt-get install mercurial
On Windows you can use the installer: Download
Use pip to install PyGame:
pip install hg+http://bitbucket.org/pygame/pygame
If the above gives freetype-config: not found error (on Linux), then try sudo apt-get install libfreetype6-dev and then repeat 3.
Alternative way:
# Grab source
hg clone https://bitbucket.org/pygame/pygame
# Finally build and install
cd pygame
python setup.py build
sudo python setup.py install
Try doing this:
sudo apt-get install mercurial
sudo pip install hg+http://bitbucket.org/pygame/pygame
An update to this may be required, as it stands in version 1.9.1 it should simply install using:
pip install pygame
However, it look like there is a bug with their pypi repository, see:
https://bitbucket.org/pygame/pygame/issues/59/pygame-has-no-pypi-page-and-cant-be
So, if you want the most recent release, you have to point directly at the ftp file ala:
pip install http://www.pygame.org/ftp/pygame-1.9.1release.tar.gz
I suppose this will be fixed in the 1.9.2 release but for now this works.
I would note that the answer supplied by Pratyush works as well, but requires the user to install mercurial if they don't have it and downloads the trunk version, so really, not ideal unless you absolutely need it.
Caveat: I'm not familiar with the Enthought Distribution, so this might not help.
As you're trying to install on Windows, if you don't want to have to mess around with C compilers, there are pre-built binary wheels for pygame here: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame
Select a package appropriate to you python version[0] and Windows architecture [1]. Download to C:\Users\User\Download\pip install E:\env\pygame-1.9.2a0-cp27-none-win_amd64.whl and install with pip install E:\env\pygame-1.9.2a0-cp27-none-win_amd64.whl
Mercurial binaries can be found on the same page, if you would like to install from source. This method would mean compiling pygame from source, for which you probably want to use this compiler package.
[0] python --version
[1] powershell "gwmi win32_operatingsystem | select osarchitecture"
The command below worked for me on Mac OS X El Capitan:
pip3 install pygame
Install on MAC:
brew install homebrew/python/pygame
Just
sudo pip install pygame
worked for me
Had this issue on macOS Sierra, where apt-get doesn't work.
Managed to solve the issue through the following steps:
First I had to install the Mercurial via Brew:
brew install mercurial
Then, I had to install Pygame dependencies:
brew install sdl sdl_image sdl_mixer sdl_ttf smpeg portmidi
Finally I used pip3 to install Pygame:
pip3 install pygame
Hope this helps!
Try
python3 -m pip install -U pygame --user
This worked twice for me on windows 7 and windows 10
The most current, the best way to install pygame is always available at:
https://www.pygame.org/wiki/GettingStarted
How to use pip depends on the operating system. So unless you have always updated and tested answers for 15 different operating systems then just send people to that page. All answers to this question are wrong for various different operating systems.
Currently, for windows, this is the way to install it in the cmd prompt. (If you already have pip installed, and people know what pip is... best just send people to the GettingStarted page).
py -m pip install pygame --user
I did use these instructions here from the official site.
But i had to change the python3 part of the command to just py.
Try: python -m pip install pygame
Or: py -m pip install pygame
Try pip install pygame or pip3 install pygame.
These should work for you.
If this does not work for you put -m before pip and python before
-m.
If putting -m does not work try reinstalling python
If you are working on windows, the command below should work fine
pip install pygame
If you are working on Linux, the command below should work fine
sudo apt-get install python-pygame
Type this in command prompt
pip install pygame
or
py -m pip install pygame
WINDOWS
If you are on a windows 10 device then you should use this command but first make sure you have Python installed from https://python.org, if you do run this in command prompt
py --version
and then whatever version it says you have (which you downloaded) keep it in mind we will use it later for now just incase try to upgrade pip incase you are on a outdated version I will be using 3.9 for the version for the rest of this as an example
py -3.9 -m pip --upgrade pip
After that if you have it already satisfied or it upgraded run this command in command prompt
py -3.9 -m pip install pygame
And wait for it to download
And to make sure it worked run this
py -3.9 -m pygame --version
If it shows the version you downloaded it!
MacOS
For MacOS do the same but then run this command to install it
python3 -m pip install -U pygame --user
or if it wont work
py -3.9 -m pip install -U pygame --user ( or just pip3 )
to see if it worked run this
python3 -m pygame.examples.aliens
or
py -3.9 -m pygame.examples.aliens
I hope this helped
I have never used Enthought distribution, but you could try to use Anaconda distribution which is also great too.
Anaconda Distribution (Any OS):
From the docs:
Update conda to the current version.
Type the following:
conda update conda
If a newer version of conda is available, type y to update:
Proceed ([y]/n)? y
Check to see if a package you have not installed named
“pygame” is available from the Anaconda repository (must be
connected to the Internet):
conda search pygame
Conda displays a list of all packages with
that name on the Anaconda repository, so we know it is available.
Install this package into the current environment:
conda install pygame
Check to see if the newly installed
program is in this environment:
conda list
Install on Windows (both python 2.7 and 3.7):
pip install pygame
Install on raspberry pi:
sudo pip3 install pygame (python 3.7)
sudo pip install pygame (python 2.7)
I think if you go to Command Prompt and type
py -m pip install pygame
that's what works for me
Here is a way: sudo install pygame Rasberry pi has it ready-installed
Install python 3.8 from python.org
Then install pygame (2.0) like this
pip install pygame==2.0.0.dev10
Make sure script path is registered in environment variables,
Make sure the python path is registered in environment variables,
also you dont have to enter entire url just write like this(windows only I dont use mac)
pip
pip install pygame
hope it work
command to install pygame is:
pip install pygame
run it in command prompt
Try doing this for python3:
python3 -m pip install pygame==1.9.6
and this for python2:
python -m pip install pygame==1.9.6
You don't have to type in the entire url. Just simply go to command prompt (windows) or terminal (mac) and then type in:
[windows] pip install pygame
[mac] python -m install pygame
hopefully that works :)
To install pygame with pip, use the following commands in the Command Prompt on Windows.
py -m pip download pygame
then...
py -m pip install pygame
You only have to do the download pygame one if it doesn't work when you use the install pygame command by itself.
You type py -m to show that it is using the module pip, which can be accessed through the command prompt.
This is for Windows. For Mac OS, use python -m pip install pygame
I know that there are already lot's of answers, but if you want to download a specific version of pygame, you can use pip:
pip install pygame==1.9.6
Pygame 1.9.6 is the latest version at the time of writing.
Pygame tells you how to install it here, in my personal experience this is what I do on windows to install it, open up command prompt and type python -m pip install pygame if that fails, check if you have more than one version of python installed if so you need to specify what version for example python3.5 -m pip install pygame the reason we do this from command prompt is that in the Python shell it doesn't understand what pip install is just to break it down a little python -m calls a python module in this case we want pip the next two arguments are what we want pip to do and what module/addon we want the action to be applied too

Fresh python 3.7 / django 2.2.1 installation not recognising that mysqlclient is installed

I have a brand new django 2.2.1 project I have just installed into a python 3.7 virtualenv on OS X (10.14.4). After some frustrations I got mysqlclient to install but when I run the django dev server it doesn't recognise that it is installed:
Here are the steps I've taken so far:
brew install mysql
pipenv --three
pipenv install django==2.2.1
pipenv install mysqlclient
brew uninstall mysql
brew install mysql-connector-c
pipenv install mysqlclient
brew unlink mysql-connector-c
brew install mysql
django-admin startproject projectname
Now, the only change I have made to the out-of-the-box django installation is to change the default database backend to django.db.backends.mysql and when I run the django server I get the following:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
However, going back to the virtualenv and doing "pip install mysqlclient" gives:
Requirement already satisfied: mysqlclient in /Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages (1.4.2.post1)
Any ideas why django can't see the mysqlclient installed in the virtualenv? I can confirm that all of the above has been run in the virtualenv. I suspect it has something to do with the faff that OSX makes you go through to install it but I'm not sure how to pick it apart.
I have also tried to replace mysqldb with pymysql as suggested here but that causes the server to give a different error:
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
Mysql is a given for this project so use of an alternative backend is not an option. Any help very gratefully received, many thanks in advance.
UPDATE: Output of pip freeze:
Django==2.2.1
django-auth-ldap==1.7.0
Markdown==3.1
mysql-connector-python==8.0.16
mysqlclient==1.4.2.post1
protobuf==3.7.1
pyasn1==0.4.5
pyasn1-modules==0.2.5
PyMySQL==0.9.3
pyodbc==4.0.26
python-ldap==3.2.0
pytz==2019.1
simplejson==3.16.0
six==1.12.0
sqlparse==0.3.0
xmltodict==0.12.0
UPDATE 2:
Following conor's post (thanks conor) I started again with a fresh virtualenv and again successfully installed mysqlclient1.4.2.post1. Here's the output from pip freeze now:
Django==2.2.1
mysqlclient==1.4.2.post1
pytz==2019.1
sqlparse==0.3.0
Still getting the same error when I do python manage.py runserver though:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
UPDATE 3:
Thought I would try importing the MySQLdb module on the python command line to see if I can get any more insight and it returns the following:
>>> import MySQLdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
from . import _mysql
ImportError: dlopen(/Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Symbol not found: _mysql_affected_rows
Referenced from: /Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
Expected in: flat namespace
in /Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
SOLVED
So it looks like the issue was that on initial installation the mysqlclient library had compiled against the wrong version of mysql (not sure how that happened), so I had to force it to recompile.
Here are the steps:
brew uninstall mysql
brew uninstall myysql-connector-c
pipenv uninstall mysqlclient
brew install mysql-connector-c
At this point we need to update /usr/local/bin/mysql_config as per the instructions that conor linked to (thanks again conor), i.e. change the line that read
libs="$libs -l "
to
libs="$libs -lmysqlclient -lssl -lcrypto "
Then, to fix the resultant "library not found for -lssl" error I used the answer from this question:
export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
Then finally force mysqlclient to recompile and reinstall mysql:
pip install --force-reinstall --ignore-installed --no-binary :all: mysqlclient
brew unlink mysql-connector-c
brew install mysql
Thanks to everyone who took time to help out!
If you're on macos do this
$ brew uninstall mysql
$ brew install mysql-connector-c
$ brew unlink mysql-connector-c
$ brew install mysql
$ pip install mysql-python
and follow the instructions here: https://pypi.org/project/mysqlclient/
Downgrading from python 3.7.4 to python 3.6 solved the issue for me on windows 10.

Mac OS Mojave Import MySQLDB import trouble

I'm trying to run a program in Python 2.7, when I run the program it says
import MySQLdb
ImportError: No module named MySQLdb.
I've tried to install MySQL using the command "brew install MySQL-connector-c" which worked but still gave me the error when running the program.
If brew install mysql-connector-c does not work on Mac OS, you can try:
brew install mysql
or
pip install MySQL-python
or
pip install mysqlclient

"Unable to find Protobuf include directory" when I use "pip install mysql-connector"

I get this error when I try to load using pip install mysql-connector. I tried pip install Protobuf too but no solution.
# Python architecture: 64-bit
# Python ARCH_64BIT: True
Unable to find Protobuf include directory.
I found this useful:
pip install mysql-connector==2.1.4 is obsolete. pip install mysql-connector-python is suggested.
The official package name of MySQL Connector for Python is mysql-connector-python:
pip install mysql-connector-python
And mysql-connector is a fork package, and is stopped updating, so
pip install mysql-connector
will install this obsolete version.

issues in importing nltk, giving errors when ran on python3 prompt

I have installed nltk on python3.5 version using command:
sudo apt-get install python3-nltk
when this did not work, I also tried using pip
when I tried checking the installations on python3 prompt it is giving me the error as this:
enter image description here
how can I resolve this error?
You can install NLTK through PIP. First of all you have to install pip for python3.
sudo apt-get install python3-pip
then check if pip installed successfully by running:
pip3 -V
and you have to take something like this
pip 9.0.1 from /usr/lib/python3.6/site-packages (python 3.6)
After use pip3 to install nltk by running:
sudo pip3 install -U nltk