You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ambari.apache.org by Jonathan Hurley <jh...@hortonworks.com> on 2015/05/11 20:19:00 UTC
Re: Python Import Changes
All,
I’d like to remind you to avoid “from resource_management import *” in the python code. “import *” seems to cause issues in some production environments where Ambari is deployed. Recently, the “import *” was removed from almost every params.py and a bad merge added it back in.
- When you encounter this import statement while working on python files, I recommend that you also remove it and add in the explicit imports
- If you add it back to a file that does not include it, you are actually un-doing work that was performed to eliminate this type of silent bug
Please be aware of this when performing code reviews as well.
> On Feb 18, 2015, at 1:17 PM, Alejandro Fernandez <af...@hortonworks.com> wrote:
>
> I completely agree Jonathan. Thank you for starting this initiative.
>
> Cheers,
> Alejandro
>
> On 2/18/15, 9:19 AM, "Jonathan Hurley" <jh...@hortonworks.com> wrote:
>
>> Hi Developers,
>>
>> We¹ve been seeing some issues in certain environments where our Python
>> global imports aren¹t working. On the surface, executing the imports in a
>> clean Python shell works, but when the agent code gets executed, we¹re
>> hit with a bunch of NameErrors for the imports that Python can¹t find.
>>
>> Moving forward, please do not use import *. Instead, we should all be
>> using explicit imports of each module/class that the Python script
>> depends on.
>>
>> One pattern that is especially bad is
>>
>> from resource_management import *
>>
>> When working on an existing file that includes a * import, please change
>> this to explicit imports. Let¹s be diligent in our code reviews as well.
>> If you see a * import, flag it as an issue so that we can work toward
>> eliminating this from the codebase.
>>
>> Thanks,
>>
>> - Jonathan
>