Question

For me, it's located at C:\Python33\libs.

For reference - this is not the same folder as C:\Python33\Lib - note the capitalization and lack of an 's'.

On one computer I was working on, I simply dropped a .py file into the libs folder and could import and use it like a library / module (sorry, I don't really know terminology very well), regardless of where the project I was working on is.

However, in trying to duplicate this on another machine, this doesn't work. Attempting to import simply gives a "no module named X" error.

So, clearly I'm misunderstanding the purpose of the libs folder, and how it differs from the Lib folder.

So, what exactly is the difference?

Was it helpful?

Solution

If you compare libs/ vs. Lib/ you'll notice that the latter is full of *.py files and the former has *.lib files. Further investigation with a text editor will show that *.py files are human-readable (I hope) and the *.lib files are not.

And that's really the difference. If you want to know more, the .lib files are static-link libraries, used for building .dlls, C extensions, and all that good stuff. Head on down the rabbit hole if that interests you.

On to the meat of your question: are you supposed to be able to drop modules in there and be able to import them? Not really. That is a side effect of that folder being included in your path. From the Modules docs:

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path. sys.path is initialized from these locations:

  • the directory containing the input script (or the current directory).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • the installation-dependent default.

Various installation methods will modify %PATH% or %PYTHONPATH% so I can't tell you exactly where to look; on my windows box, the python installer modified %PATH% for me, so you should probably look there first. Notably, my path does not include Python33/libs/ so I would not expect it to be there by default.

OTHER TIPS

Just looking on mine (Windows 7) /libs appears to be the native code libraries (*.lib) vs the straight python libraries in /Lib. The readme also mentions a configuration flag:

--with-libs='libs': Add 'libs' to the LIBS that the python interpreter is linked against.

Which may or may not be set on different installs/platforms.

This isn't really a answer; hopefully someone with a firmer knowledge of it will explain further - was just a bit too much info to squeeze into a comment.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top