[Nix-dev] Python packages with __future__ imports broken by wrapper?

Domen Kožar domen at dev.si
Thu May 21 18:15:54 CEST 2015


Are you using unstable branch or 14.12?

I think we'll need to drop use of sed and go with Python AST parsing for
injecting program name.

On Thu, May 21, 2015 at 6:11 PM, Jeffrey David Johnson <jefdaj at gmail.com>
wrote:

> I installed python27Packages.googlecl, and when running `google` it says:
>
>   File
> "/nix/store/1ksk91s0kd1sv2clrkwcvzcmr67smgps-python2.7-googlecl-0.9.14/bin/.google-wrapped",
> line 45
>     from __future__ import with_statement
> SyntaxError: from __future__ imports must occur at the beginning of the
> file
>
> Indeed, that file has 44 lines of other stuff first that looks like they
> were added by a wrapper script:
>
> #!/nix/store/pbi1lgank10fy0xpjckbdpgacqw34dsz-python-2.7.9/bin/python2.7
> #
> # Copyright (C) 2010 Google Inc.
> #
> # Licensed under the Apache License, Version 2.0 (the "License");
> # you may not use this file except in compliance with the License.
> # You may obtain a copy of the License at
> #
> #      http://www.apache.org/licenses/LICENSE-2.0
> #
> # Unless required by applicable law or agreed to in writing, software
> # distributed under the License is distributed on an "AS IS" BASIS,
> # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
>
> import sys; sys.argv[0] = 'google'
> """Main function for the Google command line tool, GoogleCL.
>
> This program provides some functionality for a number of Google services
> from
> the command line.
>
> Example usage (omitting the initial "./google"):
>   # Create a photo album with tags "Vermont" and name "Summer Vacation
> 2009"
>   picasa create -n "Summer Vacation 2009" -t Vermont
> ~/photos/vacation2009/*
>
>   # Post photos to an existing album
>   picasa post -n "Summer Vacation 2008" ~/old_photos/*.jpg
>
>   # Download another user's albums whose titles match a regular expression
>   picasa get --user my.friend.joe --name ".*computer.*"
> ~/photos/joes_computer
>
>   # Delete some posts you accidentally put up
>   blogger delete -n "Silly post, number [0-9]*"
>
>   # Post your latest film endeavor to YouTube
>   youtube post --category Film --tag "Jane Austen, zombies"
> ~/final_project.mp4
>
> Some terminology in use:
>   service: The Google service being accessed (e.g. Picasa, Blogger,
> YouTube).
>   task: What the client wants done by the service (e.g. post, get, delete).
>
> """
> from __future__ import with_statement
>
> __author__ = 'tom.h.miller at gmail.com (Tom Miller)'
> import glob
> import logging
> import optparse
>
>
> I guess we need to move this line below any __future__ statements:
>
> import sys; sys.argv[0] = 'google'
>
> According to https://docs.python.org/2/reference/simple_stmts.html#future
> the rest should be OK:
>
> A future statement must appear near the top of the module. The only lines
> that can appear before a future statement are:
>
>     the module docstring (if any),
>     comments,
>     blank lines, and
>     other future statements.
>
> Jeff
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20150521/701cfa3f/attachment.html 


More information about the nix-dev mailing list