471,338 Members | 1,084 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,338 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 2208
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 discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

7 posts views Thread by Edward Diener | last post: by
reply views Thread by limodou | last post: by
1 post views Thread by Ilias Lazaridis | last post: by
2 posts views Thread by Chaz Ginger | last post: by
reply views Thread by TiNo | last post: by
5 posts views Thread by Larry Bates | last post: by
reply views Thread by Gabriel Genellina | last post: by

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.