put dependency models into your main application, not the alembic directory. the "env.py" file is loaded through a special per-file loader, so it isn't really part of a Python "package" per se. the other things that env.py needs, have them import from your normal application, e.g. "from myapp.migrations import x, y, z".
On Apr 21, 2014, at 3:36 PM, Maxime Lévesque <maxime.leves...@gmail.com> wrote: > > Having the same need, I'd like to know if there is a way to do this. > > Thanks > > On Thursday, November 14, 2013 4:24:40 AM UTC-5, Michal Nowikowski wrote: > Hello, > > I observed that I repeat myself in upgrade modules. > So I concluded that it would be good to put that code into separate python > module and then just import it in upgrade modules. > I put my code in alembic/common.py just beside env.py. > Unfortunately it is not so easy. > Current working directory is 2 levels up regarding alembic/versions and to > import anything from alembic/common.py > I have to tweak sys,path and I cannot just add "../.." due to compelxity of > my project. > I wanted to do it using: > from alembic import context > sys.path.append(context.config.get_main_option("script_location")) > from common import add_ref, drop_ref > But it does not work: > $ alembic history > Traceback (most recent call last): > File "/usr/bin/alembic", line 9, in <module> > load_entry_point('alembic==0.4.1', 'console_scripts', 'alembic')() > File "/usr/lib/python2.7/dist-packages/alembic/config.py", line 255, in main > CommandLine(prog=prog).main(argv=argv) > File "/usr/lib/python2.7/dist-packages/alembic/config.py", line 250, in main > self.run_cmd(cfg, options) > File "/usr/lib/python2.7/dist-packages/alembic/config.py", line 241, in > run_cmd > **dict((k, getattr(options, k)) for k in kwarg) > File "/usr/lib/python2.7/dist-packages/alembic/command.py", line 156, in > history > for sc in script.walk_revisions(): > File "/usr/lib/python2.7/dist-packages/alembic/script.py", line 72, in > walk_revisions > heads = set(self.get_heads()) > File "/usr/lib/python2.7/dist-packages/alembic/script.py", line 269, in > get_heads > for script in self._revision_map.values(): > File "/usr/lib/python2.7/dist-packages/alembic/util.py", line 220, in > __get__ > obj.__dict__[self.__name__] = result = self.fget(obj) > File "/usr/lib/python2.7/dist-packages/alembic/script.py", line 201, in > _revision_map > script = Script._from_filename(self.versions, file_) > File "/usr/lib/python2.7/dist-packages/alembic/script.py", line 422, in > _from_filename > module = util.load_python_file(dir_, filename) > File "/usr/lib/python2.7/dist-packages/alembic/util.py", line 186, in > load_python_file > module = imp.load_source(module_id, path, open(path, 'rb')) > File "alembic/versions/31802014a5db_create_product_recor.py", line 18, in > <module> > sys.path.append(context.config.get_main_option("script_location")) > AttributeError: 'module' object has no attribute 'config' > > Do you now how to handle this? > > Regards, > Godfryd > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy-alembic" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy-alembic+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.