473,394 Members | 1,887 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

Installing modules via setuptools in a script

Date: Fri, 23 Nov 2007 19:35:21 -0000
Message-ID: <MP************************@news.individual.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
User-Agent: MicroPlanet-Gravity/2.70.2067

Hi,

can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already installed)?!

Something like this:

try:
import missing_module
except import_error
import setuptools
setuptools.whatever.install(missing_module)
Thorsten
Nov 24 '07 #1
7 2296
Thorsten Kampe wrote:
Hi,

can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already installed)?!

Something like this:

try:
import missing_module
except import_error
import setuptools
setuptools.whatever.install(missing_module)
The recommended way to handle dependencies using setuptools is to specify them
in the install_requires metadata in the setup() function call in your setup.py:

# http://peak.telecommunity.com/DevCen...ools#basic-use
setup(name="foo",
...
install_requires = [
'some_package >= 1.0',
'another_package',
],
)

However, if you have special needs that really do require downloading the
dependency at runtime instead of install-time:

#
http://peak.telecommunity.com/DevCen...and-attributes

import pkg_resources
pkg_resources.resolve('some_package >= 1.0')
pkg_resources.resolve('another_package')

import some_package
import another_package

But, please be sure that that your needs are special.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

Nov 24 '07 #2
* Robert Kern (Sat, 24 Nov 2007 16:33:37 -0600)
Thorsten Kampe wrote:
can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already installed)?!

Something like this:

try:
import missing_module
except import_error
import setuptools
setuptools.whatever.install(missing_module)

The recommended way to handle dependencies using setuptools is to specify them
in the install_requires metadata in the setup() function call in your setup.py:
It's just a simple script - no package. So I don't even have a
setup.py.
However, if you have special needs that really do require downloading the
dependency at runtime instead of install-time:

#
http://peak.telecommunity.com/DevCen...and-attributes

import pkg_resources
pkg_resources.resolve('some_package >= 1.0')
pkg_resources.resolve('another_package')

import some_package
import another_package
[5]>>pkg_resources.working_set.resolve('betterprint ')
----------------------------------------------------------------------
-----
AttributeError Traceback (most recent call
last)

F:\program files\python\<ipython consolein <module>()

F:\program files\python\lib\site-packages\setuptools-0.6c5-py2.5.egg
\pkg_resou
rces.py in resolve(self=<pkg_resources.WorkingSet object at
0x01457710>, requi
rements=['n', 'i', 'r', 'p', 'r', 'e', 't', 't', 'e', 'b'], env=None,
installe
r=None)
472 # Ignore cyclic or redundant dependencies
473 continue
--474 dist = best.get(req.key)
dist = undefined
best.get = <built-in method get of dict object at 0x016BC660>
req.key = undefined
475 if dist is None:
476 # Find the best distribution and add it to the
map

AttributeError: 'str' object has no attribute 'key'
Nov 25 '07 #3
Thorsten Kampe <th******@thorstenkampe.dewrites:
* Robert Kern (Sat, 24 Nov 2007 16:33:37 -0600)
Thorsten Kampe wrote:
can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already
installed)?!
The recommended way to handle dependencies using setuptools is to
specify them in the install_requires metadata in the setup()
function call in your setup.py:

It's just a simple script - no package. So I don't even have a
setup.py.
The recommended way of installing a simple script that has
dependencies is to write a setup.py for the simple script, so that you
can declare its dependencies and have them checked on install.

--
\ "Pinky, are you pondering what I'm pondering?" "Well, I think |
`\ so, Brain, but pantyhose are so uncomfortable in the |
_o__) summertime." -- _Pinky and The Brain_ |
Ben Finney
Nov 25 '07 #4
* Ben Finney (Mon, 26 Nov 2007 09:04:51 +1100)
Thorsten Kampe <th******@thorstenkampe.dewrites:
* Robert Kern (Sat, 24 Nov 2007 16:33:37 -0600)
Thorsten Kampe wrote:
can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already
installed)?!
>
The recommended way to handle dependencies using setuptools is to
specify them in the install_requires metadata in the setup()
function call in your setup.py:
It's just a simple script - no package. So I don't even have a
setup.py.

The recommended way of installing a simple script that has
dependencies is to write a setup.py for the simple script, so that you
can declare its dependencies and have them checked on install.
Yes, I know. But this script is not going to be installed - just run.
And therefore I'd like to know if it's possible to install missing
dependencies in the script itself via importing setuptools. Or do I
have to use "subprocess('easy_install')"?

Thorsten
Nov 26 '07 #5
Thorsten Kampe wrote:
* Robert Kern (Sat, 24 Nov 2007 16:33:37 -0600)
>Thorsten Kampe wrote:
>>can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already installed)?!

Something like this:

try:
import missing_module
except import_error
import setuptools
setuptools.whatever.install(missing_module)
The recommended way to handle dependencies using setuptools is to specify them
in the install_requires metadata in the setup() function call in your setup.py:

It's just a simple script - no package. So I don't even have a
setup.py.
>However, if you have special needs that really do require downloading the
dependency at runtime instead of install-time:

#
http://peak.telecommunity.com/DevCen...and-attributes

import pkg_resources
pkg_resources.resolve('some_package >= 1.0')
pkg_resources.resolve('another_package')

import some_package
import another_package

[5]>>pkg_resources.working_set.resolve('betterprint ')
----------------------------------------------------------------------
-----
AttributeError Traceback (most recent call
last)

F:\program files\python\<ipython consolein <module>()

F:\program files\python\lib\site-packages\setuptools-0.6c5-py2.5.egg
\pkg_resou
rces.py in resolve(self=<pkg_resources.WorkingSet object at
0x01457710>, requi
rements=['n', 'i', 'r', 'p', 'r', 'e', 't', 't', 'e', 'b'], env=None,
installe
r=None)
472 # Ignore cyclic or redundant dependencies
473 continue
--474 dist = best.get(req.key)
dist = undefined
best.get = <built-in method get of dict object at 0x016BC660>
req.key = undefined
475 if dist is None:
476 # Find the best distribution and add it to the
map

AttributeError: 'str' object has no attribute 'key'
My apologies for misleading you. There is no easy way to do this. Here is a
roundabout way which might be suitable for a throwaway hack script. If it's not
a throwaway hack script, then please heed Ben's advice. Alternatively, just
distribute betterprint along with your script and save yourself the headache.
In [1]: import betterprint
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)

/Users/rkern/<ipython consolein <module>()

ImportError: No module named betterprint

In [2]: import pkg_resources

In [3]: from setuptools.dist import Distribution

In [4]:
pkg_resources.working_set.resolve(pkg_resources.pa rse_requirements('betterprint'),
installer=Distribution().fetch_build_egg)
zip_safe flag not set; analyzing archive contents...

Installed /Users/rkern/betterprint-0.1-py2.5.egg
Out[4]: [betterprint 0.1 (/Users/rkern/betterprint-0.1-py2.5.egg)]

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

Nov 26 '07 #6
* Robert Kern (Mon, 26 Nov 2007 04:34:17 -0600)
Thorsten Kampe wrote:
* Robert Kern (Sat, 24 Nov 2007 16:33:37 -0600)
Thorsten Kampe wrote:
can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already installed)?!

Something like this:

try:
import missing_module
except import_error
import setuptools
setuptools.whatever.install(missing_module)
The recommended way to handle dependencies using setuptools is to specify them
in the install_requires metadata in the setup() function call in your setup.py:
It's just a simple script - no package. So I don't even have a
setup.py.
[...]
My apologies for misleading you. There is no easy way to do this. Here is a
roundabout way which might be suitable for a throwaway hack script. If it's not
a throwaway hack script, then please heed Ben's advice. Alternatively, just
distribute betterprint along with your script and save yourself the headache.
In [1]: import betterprint
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)

/Users/rkern/<ipython consolein <module>()

ImportError: No module named betterprint

In [2]: import pkg_resources

In [3]: from setuptools.dist import Distribution

In [4]:
pkg_resources.working_set.resolve(pkg_resources.pa rse_requirements('betterprint'),
installer=Distribution().fetch_build_egg)
zip_safe flag not set; analyzing archive contents...

Installed /Users/rkern/betterprint-0.1-py2.5.egg
Out[4]: [betterprint 0.1 (/Users/rkern/betterprint-0.1-py2.5.egg)]
Okay, works for me, thanks. Is there an option to have the downloaded
module installed into the "site-packages" directory (and not into the
current)?

Thorsten
Nov 26 '07 #7
Thorsten Kampe wrote:
* Robert Kern (Mon, 26 Nov 2007 04:34:17 -0600)
>Thorsten Kampe wrote:
>>* Robert Kern (Sat, 24 Nov 2007 16:33:37 -0600)
Thorsten Kampe wrote:
can anyone give me a short code snippet how to install a missing
module via setuptools (assuming setuptools is already installed)?!
>
Something like this:
>
try:
import missing_module
except import_error
import setuptools
setuptools.whatever.install(missing_module)
The recommended way to handle dependencies using setuptools is to specify them
in the install_requires metadata in the setup() function call in your setup.py:
It's just a simple script - no package. So I don't even have a
setup.py.
[...]
>My apologies for misleading you. There is no easy way to do this. Here is a
roundabout way which might be suitable for a throwaway hack script. If it's not
a throwaway hack script, then please heed Ben's advice. Alternatively, just
distribute betterprint along with your script and save yourself the headache.
In [1]: import betterprint
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)

/Users/rkern/<ipython consolein <module>()

ImportError: No module named betterprint

In [2]: import pkg_resources

In [3]: from setuptools.dist import Distribution

In [4]:
pkg_resources.working_set.resolve(pkg_resources.p arse_requirements('betterprint'),
installer=Distribution().fetch_build_egg)
zip_safe flag not set; analyzing archive contents...

Installed /Users/rkern/betterprint-0.1-py2.5.egg
Out[4]: [betterprint 0.1 (/Users/rkern/betterprint-0.1-py2.5.egg)]

Okay, works for me, thanks. Is there an option to have the downloaded
module installed into the "site-packages" directory (and not into the
current)?
No. This is a hack. If you need things installed properly, use a setup.py.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

Nov 26 '07 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

7
by: Edward Diener | last post by:
I can install Python 2.4 on the Fedora 3 Linux system, but after I do a number of Linux utilities and commands, like yum, stop working because they were dependent on the Python 2.3 installation....
0
by: limodou | last post by:
I'm new to setuptools. One question is: Recently I want to use setuptools for a project. My command line is just like : python setup.py sdist --formats=gztar But I found some deleted...
1
by: Ilias Lazaridis | last post by:
If I understood things right, setuptools extends the functionality of distutils Thus replacing within a setup.py: from distutils.core import setup with try:
2
by: Chaz Ginger | last post by:
Here is a problem I am trying to solve; I am sure there must be an easy way to do it and I just don't know how. I have a rather large application that I am writing. To make it easy for the user...
0
by: TiNo | last post by:
Hi, I'm having problems installing easy_install. When I run python ez_setup.py I get: G:\python>python ez_setup.py 'import site' failed; use -v for traceback Downloading...
11
by: Tina I | last post by:
Hi list, Is there a preferred way to distribute programs that depends on third party modules like PyQt, Beautifulsoup etc? I have used setuptools and just having the setup script check for the...
5
by: Larry Bates | last post by:
Info: Python version: ActivePython 2.5.1.1 Platform: Windows I wanted to install BeautifulSoup today for a small project and decided to use easy_install. I can install other packages just...
0
by: Gabriel Genellina | last post by:
En Thu, 10 Jul 2008 14:02:29 -0300, Bhagwat Kolde <bbkolde@gmail.com> escribi�: If it is a single Python module, you can put it anywhere in the Python path. A good place may be the...
0
by: trihaitran | last post by:
I am reading chapter two of the Pylons book. In the text I am told to run: $ python virtualenv.py --no-site-packages env This is what I got back: $ python virtualenv.py --no-site-packages...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.