Question: Say there is a folder, '/home/user/temp/a40bd22344'. The name is completely random and changes in every iteration. I need to be able to import this folder in Python using a fixed name, say 'project'. I know I can add this folder to sys.path to enable import lookup, but is there a way to replace 'a40bd22344' with 'project'?

Maybe some clever hacks in **init**.py?

Added: 

It needs to be global - that is, other scripts loading 'project' via the standard:

```
import project

```

Have to work properly, loading a40bd22344 instead.

Answer: 
You first import it with **import**:

```
>>> __import__('temp/a40bd22344')
<module 'temp/a40bd22344' from 'temp/a40bd22344/__init__.py'>

```

Then you make sure that this module gets known to Python as `project`:

```
>>> import sys
>>> sys.modules['project'] = sys.modules.pop('temp/a40bd22344')

```

After this, anything importing project in the current Python session will get the original module

```
>>> import project
>>> project
<module 'temp/a40bd22344' from 'temp/a40bd22344/__init__.py'>

```

This will work also for sub-modules: if you have a foobar.py in the same location you'll get

```
>>> import project.foobar
>>> project.foobar
<module 'project.foobar' from 'temp/a40bd22344/foobar.py'>

```

**Addendum.** Here's what I'm running:

```
>>> print sys.version
2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

```
Sure, `project = __import__('a40bd22344')` after `sys.path` is set properly will just work.

Suppose you want to do it in a function taking the full path as an argument and setting the *global* import of `project` properly (as well as magically making `import project` work afterwards in other modules). Piece of cake:

```
def weirdimport(fullpath):
  global project

  import os
  import sys
  sys.path.append(os.path.dirname(fullpath))
  try:
      project = __import__(os.path.basename(fullpath))
      sys.modules['project'] = project
  finally:
      del sys.path[-1]

```

this also leaves sys.path as it found it.