Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
guidance needed: best practice for script packaging
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  4 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Alan Isaac  
View profile  
 More options Jun 26 2007, 10:35 pm
Newsgroups: comp.lang.python
From: Alan Isaac <ais...@american.edu>
Date: Wed, 27 Jun 2007 02:35:37 GMT
Local: Tues, Jun 26 2007 10:35 pm
Subject: guidance needed: best practice for script packaging
This is a simple question about actual practice.
I just want to know how you (yes you) are
approaching this problem.  

The problem:
What is the recommended packaging of
demo scripts or test scripts for a package
to be distributed to others to "play with".
(I.e., without "installing".)

Example:
Suppose I have the package structure:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleXX.py
    subpackage2/
        __init__.py
        moduleYY.py

Important detail:
moduleXX uses a relative import to access moduleYY.

The goal:
I have a script test.py that I want to
distribute with the package.  This script will import
moduleXX to illustrate or test the module's use.

Is it the case that this script cannot reasonably be
bundled with `package`?  (I.e., within its directory
structure.)

Note:
If I put it in the `subpackage1` directory and
just import moduleXX, I will get
ValueError: Attempted relative import in non-package

Note:
If I put it in the `package` directory and
import subpackage1.moduleXX, I will get
ValueError: Attempted relative import beyond toplevel package

Here is one hack, based on a suggestion of Alex Martelli
http://mail.python.org/pipermail/python-list/2007-May/438250.html
and others.
- add a `scripts` subdirectory to `package`
- use path manipulation to find the directory holding `package`
- insert this directory in sys.path

This hack "works".
However it has also been claimed that this approach is an
insane for any shared code.  Is it?  If so, what is best practice?

Note:
I do not want to assume the package will be installed:
a user should be able to play with it without installing it.

This is a repeat question.  The usual rule is, if you do not get an answer, you
are asking the question in an unhelpful way.  If my question is still unclear, I
would appreciate any leads on how to clarify it.

Thank you,
Alan Isaac


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gabriel Genellina  
View profile  
 More options Jun 26 2007, 11:39 pm
Newsgroups: comp.lang.python
From: "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
Date: Wed, 27 Jun 2007 00:39:58 -0300
Local: Tues, Jun 26 2007 11:39 pm
Subject: Re: guidance needed: best practice for script packaging
En Tue, 26 Jun 2007 23:35:37 -0300, Alan Isaac <ais...@american.edu>  
escribió:

I put test/demo/main scripts *outside* the package - that would be the  
directory containing "package" here.
This way, "import package" works, and intra-package relative references  
work too.

> The goal:
> I have a script test.py that I want to
> distribute with the package.  This script will import
> moduleXX to illustrate or test the module's use.

> Is it the case that this script cannot reasonably be
> bundled with `package`?  (I.e., within its directory
> structure.)

Yes, perhaps there is no reasonably/good/non-hackish way to bundle it  
inside "package". At least I don't know how to do that and also keep  
relative imports working at the same time, without playing with sys.path  
and such things.

> Here is one hack, based on a suggestion of Alex Martelli
> http://mail.python.org/pipermail/python-list/2007-May/438250.html
> and others.
> - add a `scripts` subdirectory to `package`
> - use path manipulation to find the directory holding `package`
> - insert this directory in sys.path

I use directly the parent directory (not a "scripts" subdirectory) because  
it is already in sys.path (being the current directory where the script  
resides). And I have only one or two such scripts, so it's not a big  
problem for me if they are not grouped in its own directory.

> I do not want to assume the package will be installed:
> a user should be able to play with it without installing it.

What I suggest works in this case too.

> This is a repeat question.  The usual rule is, if you do not get an  
> answer, you
> are asking the question in an unhelpful way.  If my question is still  
> unclear, I
> would appreciate any leads on how to clarify it.

I read your previous post, but since I didn't feel that I had a "good"  
answer I didn't reply the first time. I were waiting for someone to  
enlighten me too on this topic...

(Certainly rephrasing the question is a smart move - but most people  
aren't as smart as you and just keep posting the same thing over and  
over...)

--
Gabriel Genellina


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Josiah Carlson  
View profile  
 More options Jun 26 2007, 11:50 pm
Newsgroups: comp.lang.python
From: Josiah Carlson <josiah.carl...@sbcglobal.net>
Date: Wed, 27 Jun 2007 03:50:22 GMT
Local: Tues, Jun 26 2007 11:50 pm
Subject: Re: guidance needed: best practice for script packaging

I have used this method more than once to get around the fact that
relative imports don't work the way I want them to in this situation.
Alternatively, you could use...

package/
   __init__.py #for 'import package'
   test.py
   shared/
     __init__.py
     subpackage1/
       __init__.py
       moduleXX.py
     subpackage2/
       __init__.py
       moduleYY.py

And always run scripts from the package/... path or from something that
is able to 'import package'.  It does force a layer of useless
namespace, but it works.

  - Josiah


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alan Isaac  
View profile  
 More options Jun 28 2007, 9:27 am
Newsgroups: comp.lang.python
From: Alan Isaac <ais...@american.edu>
Date: Thu, 28 Jun 2007 13:27:46 GMT
Local: Thurs, Jun 28 2007 9:27 am
Subject: Re: guidance needed: best practice for script packaging
My thanks to Gabriel and Josiah.
Alan

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »